0

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

现在,是否可以覆盖任何 ActiveMQ 的类(主题的实现者)来实现这种行为?这方面的任何线索都会有所帮助。

如果在任何其他开源提供商中也可以做到这一点,请告诉我。

4

1 回答 1

0

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

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

单独的同步和更新通道

我可能会将“同步/快照”频道与“增量更新”频道分开。

一种方法是将“快照同步”实现为JMS 请求/回复,其中消费者向提供者请求同步,然后继续依赖通过主题推送的增量更新。

咨询信息和选择器

您还可以使用AdvisoryMessagesJMS Selectors的组合使用单个主题来实现这一切。

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

引入两个消息属性:MsgType 和 Receiver

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

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

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

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

追溯消费者

您可能会使用追溯消费者- 该示例实际上显示了与您的场景类似的场景。

于 2014-03-23T18:50:50.463 回答