【问题标题】:Springxd convert from rabbitmq json message as output to a pojo in a custom spark processor moduleSpringxd从rabbitmq json消息转换为自定义火花处理器模块中的pojo
【发布时间】:2015-07-30 12:33:35
【问题描述】:

我正在尝试创建如下流:

rabbitmq |火花定制处理器|文件接收器

RabbitMq 从包含消息的队列中读取,其标头类型为 application/json,代表我的 POJO 类 House。然后这些读取的消息应该被传输到我的spark-custom-processor 并且在处理器完成他的工作之后,将结果存储在一个文件中。

问题是到达spark-custom-processor的数据类型是Byte而不是转换为我的POJO类House的application/json消息。

如果阅读解释 Type convertion 的文档,并且它表明转换为我的 POJO House 类型应该自动完成,但它没有。

我也试过用:

rabbitmq | --inputputType=application/x-java-object;type=domain.MetricBean spark-custom-processor |文件接收器 指定转换,但 springXdShell 抱怨 ; 处的 sintax 错误

有没有办法做到这一点,或者我必须自己在我的spark-custom-processor 中使用ObjectMapper 进行映射?

【问题讨论】:

  • 试着把它变成这样--inputputType="application/x-java-object;type=domain.MetricBean"
  • 是的,但是使用 '...' 我编辑并取消删除了我的答案。

标签: apache-spark spring-integration spark-streaming spring-xd


【解决方案1】:

你只需要用;引用字符串。

我刚刚测试了这个,效果很好......

xd:>stream create foo --definition "rabbit --outputType='application/x-java-object;type=foo.Foo' 
    | log" --deploy

.

public class Foo {

    private String foo;

    public String getFoo() {
        return foo;
    }

    public void setFoo(String foo) {
        this.foo = foo;
    }

    @Override
    public String toString() {
        return "Foo [foo=" + foo + "]";
    }

}

已发布{"foo":"bar"}

2015-07-30T10:37:36-0400 1.2.0.RC1 INFO SimpleAsyncTaskExecutor-1 sink.foo - Foo [foo=bar]

【讨论】:

  • 太棒了!!!!它看起来如此愚蠢和容易,但我没有尝试过,也没有猜到。 @gary-russell 有什么方法可以帮助我改进有关这些主题的文档
  • 是的,当然;该项目托管在 GitHub 上;最好的起点是contributing guidelines。文档源文件为here;它以 asciidoctor 格式编写。我们期待您的第一个 Pull Request!
猜你喜欢
  • 2017-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-22
  • 2021-10-18
  • 1970-01-01
相关资源
最近更新 更多