Springxd从rabbitmq json消息转换为自定义spark处理器模块中的pojo

时间:2015-07-30 12:33:36

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

我尝试创建一个以下的流:

  

rabbitmq | spark-custom-processor |文件 - 汇

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错误的抱怨

有没有方法可以做到,或者我必须自己在ObjectMapper中使用spark-custom-processor进行映射?

1 个答案:

答案 0 :(得分:0)

您只需要使用;引用字符串。

我刚测试过这个并且工作正常......

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]