我正在考虑使用camel-twitter(Apache Camel的Twitter组件:http://camel.apache.org/twitter.html) . 我想使用Twitters Streaming API .
event 和 direct 之间的 difference 是什么?
对于 usage of the event-driven consumer ,有人有 example code 吗? (到目前为止我才找到这个https://fisheye6.atlassian.com/browse/camel/trunk/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/SearchEventTest.java)
3 回答
Direct类型告诉消费者/ 生产环境 者每次以某种方式激活 endpoints 时它将连接到Twitter . 假设您想使用保存在数据库中的计划在Twitter上进行搜索:
使用消耗调度数据的JDBC / JPA endpoints
根据数据库中的调度数据动态创建和注册Quartz endpoints
将Quartz endpoints 配置为向Direct Twitter endpoints 发送消息,以便在此时进行搜索
您将被评为永远 . 无论您使用Streaming,Direct还是Polling . 如果您正在使用Streaming,请从Twitter开发人员中心阅读此FAQ
direct意味着你做一个明确的直接调用来触发twitter . 例如,使用Camel中的直接组件来调用twitter的路由 .
事件意味着事件驱动的消费者,您可以通过Twitter对事件做出反应,例如在搜索中找到的新推文等 .
例如,我们还有这个websocket twitter示例:http://camel.apache.org/twitter-websocket-example.html
请记住,Streaming API不能与直接 endpoints 一起使用 - 仅支持事件和轮询 .
从API使用的角度来看,事件和轮询都工作 identically . 打开并维护单个流侦听器 . 速率限制注意事项没有区别 .
唯一的区别是事件 endpoints 在收到每个消息后立即发送1个事件 . 轮询将收到的消息排队,并在每次轮询时释放它们 .
所以,差异纯粹是它们如何在Camel中传递 . 对于API,两个流 endpoints 都是相同的 .