如何使用ActiveMQ主题发送增量更新和快照同步

时间:2014-03-23 00:00:17

标签: jms activemq trading jms-topic

这是我的用例:我正在开发一个交易应用程序,我想向活跃的消费者发送增量股票更新(bidQty等),而不是整个报价和新消费者的快照更新(开始)。 / p>

现在,是否有可能覆盖任何ActiveMQ的类(Topic的实现者)来实现这种行为?任何关于此的线索都会有所帮助。

如果在任何其他openSource提供商中都可以这样做,请告诉我。

1 个答案:

答案 0 :(得分:0)

这不是您可以简单地更改主题的实现的情况。实际上,您应该避免更改核心ActiveMQ功能的实现来解决特定的业务需求。修复错误和添加核心消息传递功能是另一回事。

使用常规ActiveMQ功能有多种方法可以解决您的用例。

单独的同步和更新频道

我可能会将" sync / snapshot"来自"增量更新"渠道。

一种方法是实现"快照同步"作为JMS request/reply,消费者要求提供者进行同步,然后继续依赖通过该主题推送的增量更新。

咨询消息和选择器

您还可以使用AdvisoryMessagesJMS Selectors混合使用单个主题来实现所有内容。

一个想法(你可以通过多种方式做到这一点):

介绍两个消息属性:MsgType和Receiver

  • 使用MsgType = inc
  • 标记每个增量更新
  • 使用消费者的某个客户端ID标记每个快照,Receiver =。
  • 让生产者收听来自ActiveMQ的咨询消息,并在有新客户订阅库存主题时触发标有Receiver =和MsgType = snapshot的快照/同步消息。
  • 客户订阅了类似
  • 的选择器

MsgType='inc' OR (MsgType='snapshot' AND Receiver=<me>)

通过这种方式,您可以触发与特定客户端的快照同步以及所有客户端的增量更新。

如果你开始考虑已经拥有的动态,你可能会想到另外十种解决方案。

追溯消费者

您可能会使用Retroactive Consumer - example实际上会显示与您类似的情况。