使用来自DB的消息的camel启用重播机制

时间:2014-03-18 12:11:14

标签: apache-camel activemq

我试图用camel实现重放机制,即,我必须检索已经存在的所有消息并转发到适当的camel路由进行重新处理。这将由石英调度程序触发。

我通过使用以下方式实现了相同的目标。

1)一旦触发了石英调度程序,就会转到处理器,该处理器将查询db并将消息作为列表并在camel exchange属性中设置为list。 2)使用驼峰,其中LoopProcessor将在交换中的迭代中设置适当的xml。 3)将它转发到activemq,它将被转发到适当的camel路由进行重新处理。 一切都好。 我看到以下两个问题 a)可能有'n'个ms(10,000+)将以List的形式在camel exchange属性中可用 - 我可以删除发送用于处理的消息但我认为这会在性能上做得更好和内存使用情况。

b)我不想将所有10,000多条消息转发给activemq,我想这会让它变得详尽无遗。是否有更好的机制将10000多条消息转发给activemq。    - 我正在考虑使用SEDA / VM(使用不同的驼峰上下文)。好的,这可以让我考虑上面的问题。

感谢。

此致 Senthil Kumar Sekar

1 个答案:

答案 0 :(得分:0)

如果消息数量有问题,则不应立即加载所有消息。

处理如下(另请参阅我对您的其他SO的回答):

  1. 限制查询数据库时的结果数。
  2. 为要处理的数据库条目设置标记(例如processedFlag
  3. 从1.开始,仅查询尚未处理的条目,直到处理完所有记录。
  4. 但是,如果10,000条消息确实存在问题,您也应该测试ActiveMQ方法。