接收Camel Twitter消费者端点数据

时间:2014-06-22 07:51:01

标签: java twitter apache-camel

我创建了一个大致如下的路线:

        @Override
        public void configure() throws Exception {

        from("direct:twitter")

            .from("twitter://timeline/user?type=direct&user=" + this.uri)

            .choice()

                .when(body().isInstanceOf(Status.class))

                    .process(new MyTwitterProcessor())
                    .convertBodyTo(MyClass.class)
                    .to("log:do something")

            .endChoice()

        .to("log:mi amigo");

        }

直接从producerTemplate.requestBody(“direct:twitter”,object)调用此路由,我希望收到一个MyClass.class实例列表。相反,它返回我在requestBody方法调用中发送的对象。

基于日志语句“log:做某事”我可以看到Status对象正在被返回 - 来自twitter的请求和响应显然正在发生。

我想了解为什么我的路由配置返回我发送它的对象,而不是来自twitter的Status对象结果。我已经为Facebook帖子和RSS提要写了另外两条路线。它们遵循类似的模式并返回响应对象,而不是我发送的请求。

我还想知道我可以做些什么来改变行为,以便producerTemplate.requestBody(...)返回一个推特消息列表。

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

使用pollEnrich组件获取其他数据:

from("direct:twitter")
    .pollEnrich("twitter://timeline/user?type=direct&user=" + this.uri)
    .choice()
    ...

或者,您可以使用以下自动启动的路线:

from("twitter://timeline/user?type=direct&user=" + this.uri)
    .choice()
    ...

注意,twitter component为每个返回的对象创建一个路由交换而不是列表。