Apache AVRO 与休息

2024-04-13

我正在评估将 Apache AVRO 用于我的 Jersey REST 服务。我将 Springboot 与 Jersey REST 结合使用。

目前我接受 JSON 作为输入,并使用 Jackson 对象映射器将其转换为 Java Pojos。

我查看了不同的地方,但找不到任何使用带有 Jersey 端点的 Apache AVRO 的示例。

我找到了这个 Github 存储库(https://github.com/FasterXML/jackson-dataformats-binary/ https://github.com/FasterXML/jackson-dataformats-binary/)其中有 Apache AVRO 插件。

我仍然找不到任何关于如何集成它的好例子。有人在 Jersey 中使用过 Apache AVRO 吗?如果是,有什么我可以使用的例子吗?


首先,需要发生两件事:

  1. 你需要制定一个习惯ObjectMapper https://github.com/FasterXML/jackson-dataformats-binary/tree/master/avro#creating-objectmapper遵循 Avro 模式格式的时尚
  2. 你需要供应该定制ObjectMapper https://jersey.github.io/documentation/latest/media.html#json到泽西岛。

那应该看起来像这样:

@Provider
public class AvroMapperProvider implements ContextResolver<ObjectMapper> {

    final AvroMapper avroMapper = new AvroMapper();

    @Override
    public ObjectMapper getContext(Class<?> type) {
        return avroMapper;
    }
}

配置您的应用程序 https://jersey.github.io/documentation/latest/media.html#json使用 Jackson 作为消息处理程序:

public class MyApplication extends ResourceConfig {
    public MyApplication() {
         super(JacksonFeature.class,AvroMapperProvider.class);
    }
}

或者,你可以实现一个自定义MessageBodyReader https://docs.oracle.com/javaee/7/api/javax/ws/rs/ext/MessageBodyReader.html and MessageBodyWriter https://docs.oracle.com/javaee/7/api/javax/ws/rs/ext/MessageBodyWriter.html这允许您直接处理传入和传出的有效负载:

public class AvroMessageReader implements MessageBodyReader<Person> {

    AvroSchema schema;

    final AvroMapper avroMapper = new AvroMapper();

    public AvroMessageReader(){
        schema = avroMapper.schemaFor(Person.class); //generates an Avro schema from the POJO class.
    }

    @Override
    public boolean isReadable(Class<?> type, Type type1, Annotation[] antns, MediaType mt) {
        return type == Person.class; //determines that this reader can handle the Person class.
    }

    @Override
    public Person readFrom(Class<Person> type, Type type1, Annotation[] antns, MediaType mt, MultivaluedMap<String, String> mm, InputStream in) throws IOException, WebApplicationException {
        return avroMapper.reader(schema).readValue(in);
    }

}

在这里,我们从假设的 Person 类生成 avro 模式。 JAX-RS 运行时将根据来自的响应选择此读取器isReadable.

然后你可以注入MessageBodyWorkers https://jersey.github.io/documentation/latest/message-body-workers.html组件到您的服务实现类中:

@Path("app")
public static class BodyReaderTest{

    @Context
    private MessageBodyWorkers workers;

    @POST
    @Produces("avro/binary")
    @Consumes("avro/binary")
    public String processMessage() {

        workers.getMessageBodyReader(Person.class, Person.class, new Annotation[]{}, MediaType.APPLICATION_JSON_TYPE);
    }
 }

回答你最后的评论:设置 mime 类型 https://avro.apache.org/docs/current/spec.html#HTTP+as+Transport在你的处理程序上推荐的 avro/binary 应该可以做到这一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apache AVRO 与休息 的相关文章

  • 如何将 javax.persistence.Column 定义为 Unsigned TINYINT?

    我正在基于 MySQL 数据库中的现有表创建 Java 持久性实体 Bean 使用 NetBeans IDE 8 0 1 我在这个表中遇到了一个字段 其类型为 无符号 TINYINT 3 我发现可以执行以下操作将列的类型定义为 unsign
  • 如何在 Firebase 远程配置中从 JSON 获取值

    我是 Android 应用开发和 Firebase 的新手 我想知道如何获取存储在 Firebase 远程配置中的 JSONArray 文件中的值 String 和 Int 我使用 Firebase Remote Config 的最终目标是
  • 是否有任何简单(且最新)的 Java 框架可用于在 Swing 应用程序中嵌入电影?

    我正在构建一个小型 Swing 应用程序 我想在其中嵌入一部电影 重要的是 这个应用程序是一个 WebStart 应用程序 并且该库应该能够打包在我启动的 jnlp 中 即 不依赖于本机库 我知道并尝试过 JMF 但我认为与其他框架相比 其
  • 如何在 Antlr4 中为零参数函数编写语法

    我的函数具有参数语法 如下面的词法分析器和解析器 MyFunctionsLexer g4 lexer grammar MyFunctionsLexer FUNCTION FUNCTION NAME A Za z0 9 DOT COMMA L
  • Java:在 eclipse 中导出到 .jar 文件

    我正在尝试将 Eclipse 中的程序导出到 jar 文件 在我的项目中 我添加了一些图片和 PDF s 当我导出到 jar 文件时 似乎只有main已编译并导出 我的意愿是如果可能的话将所有内容导出到 jar 文件 因为这样我想将其转换为
  • 大数据使用什么数据结构

    我有一个包含一百万行的 Excel 工作表 每行有 100 列 每行代表一个具有 100 个属性的类的实例 列值是这些属性的值 哪种数据结构最适合在这里使用来存储数百万个数据实例 Thanks 这实际上取决于您需要如何访问这些数据以及您想要
  • 如何将 Mat (opencv) 转换为 INDArray (DL4J)?

    我希望任何人都可以帮助我解决这个任务 我正在处理一些图像分类并尝试将 OpenCv 3 2 0 和 DL4J 结合起来 我知道DL4J也包含Opencv 但我认为它没什么用 谁能帮我 如何转换成 INDArray 我尝试阅读一些问题here
  • 来自十六进制代码的 Apache POI XSSFColor

    我想将单元格的前景色设置为十六进制代码中的给定颜色 例如 当我尝试将其设置为红色时 style setFillForegroundColor new XSSFColor Color decode FF0000 getIndexed 无论我在
  • 什么时候可以在 Java 中使用 Thead.stop() ?

    Thread stop 的 Java 文档听起来好像如果您调用 Thread stop 世界就会终结 已弃用 这种方法本质上是不安全的 停止线程 Thread stop 导致它解锁所有已锁定的监视器 作为未经检查的 ThreadDeath
  • 自动生成Flyway的迁移SQL

    当通过 Java 代码添加新模型 字段等时 JPA Hibernate 的自动模式生成是否可以生成新的 Flyway 迁移 捕获自动生成的 SQL 并将其直接保存到新的 Flyway 迁移中 以供审查 编辑 提交到项目存储库 这将很有用 预
  • 是否可以通过编程方式查找 logback 日志文件?

    自动附加日志文件以支持电子邮件会很有用 我可以以编程方式设置路径 如以编程方式设置 Logback Appender 路径 https stackoverflow com questions 3803184 setting logback
  • 如何检测 Java 字符串中的 unicode 字符?

    假设我有一个包含 的字符串 我如何找到所有这些 un icode 字符 我应该测试他们的代码吗 我该怎么做呢 例如 给定字符串 A X 我想将其转换为 AYXY 我想对其他 unicode 字符做同样的事情 并且我不想将它们存储在某种翻译映
  • 在另一个模块中使用自定义 gradle 插件模块

    我正在开发一个自定义插件 我希望能够在稍后阶段将其部署到存储库 因此我为其创建了一个独立的模块 在对其进行任何正式的 TDD 之前 我想手动进行某些探索性测试 因此 我创建了一个使用给定插件的演示模块 到目前为止 我发现执行此操作的唯一方法
  • 了解joda时间PeriodFormatter

    我以为我明白了 但显然我不明白 你能帮我通过这些单元测试吗 Test public void second assertEquals 00 00 01 OurDateTimeFormatter format 1000 Test public
  • 自托管 WCF REST 服务和基本身份验证

    我创建了一个自托管的 WCF REST 服务 带有 WCF REST Starter Kit Preview 2 中的一些额外内容 这一切工作正常 我现在正在尝试向服务添加基本身份验证 但我在 WCF 堆栈中遇到了一些相当大的障碍 这阻止了
  • JMenu 中的文本居中

    好吧 我一直在网上寻找有关此问题的帮助 但我尝试的任何方法似乎都不起作用 我想让所有菜单文本都集中在菜单按钮上 当我使用setHorizontalTextPosition JMenu CENTER 没有变化 事实上 无论我使用什么常量 菜单
  • Spring-ws:如何从没有“Request”元素的 xsd 创建 Wsdl

    尝试为客户端实现 SOAP Web 服务 我需要一个 wsdl 文件来通过soapUI 测试该服务 但正如您在下面看到的 这个 xsd 没有 Request 和 Response 方法 所有请求和响应都被定义为基本 ServiceProvi
  • Hamcrest Matchers - 断言列表类型

    问题 我目前正在尝试使用 Hamcrest Matchers 来断言返回的列表类型是特定类型 例如 假设我的服务调用返回以下列表 List
  • Resteasy 可以查看 JAX-RS 方法的参数类型吗?

    我们使用 Resteasy 3 0 9 作为 JAX RS Web 服务 最近切换到 3 0 19 我们开始看到很多RESTEASY002142 Multiple resource methods match request警告 例如 我们
  • 在浏览器刷新中刷新检票面板

    我正在开发一个付费角色系统 一旦用户刷新浏览器 我就需要刷新该页面中可用的统计信息 统计信息应该从数据库中获取并显示 但现在它不能正常工作 因为在页面刷新中 java代码不会被调用 而是使用以前的数据加载缓存的页面 我尝试添加以下代码来修复

随机推荐

  • Rails 替换集合,而不是从 has_many 嵌套属性表单添加到集合中

    我有这些模型 为了便于阅读而简化 class Place lt ActiveRecord Base has many business hours dependent destroy accepts nested attributes fo
  • 在 JSF 中使用 JPA 实体。防止 LazyInitializationException 的最佳策略是什么?

    希望听取专家关于从 JSF UI 编辑 JPA 实体的最佳实践的意见 所以 关于这个问题 我要说几句话 想象一下我有持久化的对象MyEntity我获取它进行编辑 在 DAO 层我使用 return em find MyEntity clas
  • 如何使用文件实现循环缓冲区?

    我的应用程序 C 程序 打开同一文件的两个文件句柄 一个处于写入模式 一个处于读取模式 应用程序中的两个单独的线程读取和写入文件 这很好用 由于我的应用程序在 RAM 磁盘大小有限的嵌入式设备上运行 我想写FileHandle在达到最大大小
  • 如何按用途自动对类中的函数进行排序?

    a Robert C Martin 的 Clean Code 一书建议根据 降级规则 对函数进行排序 我们希望代码读起来像自上而下的叙述 我们想要每一个 函数之后是下一个抽象级别的函数 因此 我们可以读取该程序 下降一个抽象级别 我们阅读函
  • 交换 img src 或显示/隐藏多个图像是否更快?

    在网页上交换图像时使用的最佳做法是什么 更改图像源或只是在页面上显示 隐藏多个图像 为了平衡速度 你必须做出选择 有两个选择 更改图像源 这样 页面加载速度会更快 因为它只获取可见图像 但当您更改 src 属性时 显示新图像将花费更长的时间
  • 如何创建具有逐字环境的新 Beamer 环境?

    我正在创建一个 Beamer 演示文稿 其中包含大量 LaTeX 示例 并且必须在逐字环境中进行 我厌倦了打字 begin example begin verbatim Verbatim Text end verbatim end exam
  • 对于大输入,十进制扩展程序运行速度非常慢

    我正在编写一个程序来计算数字的小数扩展103993 33102我想根据用户输入的数字打印出所有尾随小数 它可以快速运行所有数量最多10 5但如果输入10 6编程大约需要 5 分钟才能打印出答案 我怎样才能加快速度 我尝试了两种不同的方法 一
  • Java从ZipInputStream条目创建InputStream

    我想编写一个从单个 InputStream 读取 ZIP 内的多个 XML 文件的方法 该方法将打开一个 ZipInputStream 并在每个 xml 文件上获取相应的 InputStream 并将其提供给我的 XML 解析器 这是该方法
  • 基于 Django 年/月的帖子存档

    我是 Django 新手并启动了一个应用程序 我做了模型 视图 模板 但我想在底部添加某种存档 页面的内容 类似这样http www flickr com photos ionutgabriel 3990015411 http www fl
  • JPA实体扩展类包含@Id

    我有实体类都包含 id 作为主键 我可以创建包含所有公共字段的抽象类并允许所有类扩展该类 如下所示 public abstract class CommonFields Id Column name ID private long id p
  • 不可能:没有附加布局管理器;跳过布局

    我完全迷失了这个错误 我理解它 但我不知道出了什么问题 对于代码 In the OnCreate of my activity historyRecyclerView RecyclerView findViewById R id recyc
  • 在 kotlin 中何时一起使用挂起函数和 Flow 或分开使用?

    在审查用 kotlin 编写的一些代码时 有件事引起了我的注意 我在一些项目中查看领域层 在一些项目中 我看到挂起功能和 Flow 一起使用 而在一些项目中 我看到只使用 Flow 例如暂停和流动在一起 class FetchMovieDe
  • 如何在Python中隐藏控制台窗口?

    我正在用 Python 编写一个 IRC 机器人 我希望为 Linux 和 Windows 制作独立的二进制文件 主要是我希望当机器人启动时 控制台窗口应该隐藏 并且用户不应该看到该窗口 我能为此做些什么呢 只需将其保存为 pyw扩大 这将
  • 将一个变量设置为等于另一个变量[重复]

    这个问题在这里已经有答案了 我有一些关于在 JavaScript 中将变量设置为等于另一个变量的问题 假设我们创建一个对象 a并设置b a var a fname Jon lname Smith age 50 var b a 我明白如果我们
  • 音色 `set-config!` 已经改变了数量,因此不知道如何使用它来将 std err/out 输出到文件

    我正在尝试使用https github com ptaoussanis timbre https github com ptaoussanis timbre记录到文件而不是控制台 以下是我找到的一些有关如何执行此操作的文档 The defa
  • 为 libstdc++ 生成 CTAGS(来自当前 GCC)

    I know 你完成了我 https github com Valloric YouCompleteMe基于 LLVM 但我想使用OmniCppComplete http www vim org scripts script php scr
  • 操作码的十六进制值

    我创建了一个非常简单的汇编程序 可以在 DOS 中打印字母 a 我在十六进制编辑器中打开它 结果是这样的 汇编代码 mov ah 2 mov dx a int 21h 十六进制代码 B4 02 B2 61 CD 21 我想了解它是如何生成的
  • 在 pdf 中按宽度调整内容

    渲染为 pdf 时 我需要 html 页面为打印宽度的 100 否则内容会被切断 是否有捷径可寻 我想出了一个解决方法 它在渲染后获取 html 宽度 然后设置缩放系数以强制正确的宽度 var page require webpage cr
  • 如何确定视图的列是派生的还是常量?

    假设我有下表 create table t Item ItemID int not null identity 1 1 constraint PK Item primary key Description varchar 256 not n
  • Apache AVRO 与休息

    我正在评估将 Apache AVRO 用于我的 Jersey REST 服务 我将 Springboot 与 Jersey REST 结合使用 目前我接受 JSON 作为输入 并使用 Jackson 对象映射器将其转换为 Java Pojo