【问题标题】:Receiving Camel Twitter Consumer Endpoint Data接收 Camel Twitter 消费者端点数据
【发布时间】:2014-06-23 03:35:39
【问题描述】:

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

        @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:do something”,我可以看到正在返回状态对象 - 来自 twitter 的请求和响应显然正在发生。

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

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

感谢您的宝贵时间。

【问题讨论】:

    标签: java twitter apache-camel


    【解决方案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 为每个返回的对象创建一个路由交换,而不是一个列表。

    【讨论】:

    • 谢谢,pollEnrich 解决了我遇到的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-11
    • 2012-11-05
    • 1970-01-01
    • 2017-06-03
    • 2016-10-10
    • 2015-09-19
    相关资源
    最近更新 更多