我创建了一个大致如下的路线:
@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(...)返回一个推特消息列表。
感谢您的时间。
答案 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为每个返回的对象创建一个路由交换而不是列表。