【问题标题】:ActiveMQ - strategy for only publishing data for which there are interested subscribers?ActiveMQ - 仅发布有兴趣订阅者的数据的策略?
【发布时间】:2017-07-26 04:38:26
【问题描述】:

我有一个消息代理,各种客户端将在一天中的短时间内连接到该代理。

经纪人维护一个主题,它可以在该主题上发布数千种事物的价格,但在任何给定时间,当前连接的一组客户只会对这些事物的一小部分感兴趣。

在紧密耦合的系统中,客户端会显式订阅特定事物,服务器会跟踪低级别客户端连接/断开连接事件(自动取消订阅断开连接的客户端),并且仅发布客户端订阅的事物的价格。

在 ActiveMQ 等更松散耦合的消息传递系统世界中,处理此类事情的最佳方法是什么?

在我的情况下,经纪人必须尽量减少发布价格的商品数量,因为它从第三方系统获取价格,这对在任何给定时间可以流式传输价格的商品数量施加了严格限制.

我的第一个倾向是不尝试跟踪低级别事件,以告知当前连接的经纪人,也不要求客户明确表示他们不再对特定商品的价格感兴趣。

相反,客户会定期公布他们对特定商品价格的兴趣。经纪人会公布有积极兴趣的任何事物的价格,并最终停止公布近期没有客户宣布任何兴趣的事物的价格。

因此,与更紧密耦合的系统不同,客户必须每隔一段时间重新宣布他们对给定的一组事物的兴趣,而他们想要价格,但从不主动宣布兴趣结束。

对于此类问题是否有更好或更标准/公认的方法?

【问题讨论】:

    标签: jms activemq messaging publish-subscribe messagebroker


    【解决方案1】:

    您的生产者需要了解连接的消费者及其选择器(如果有),所以我认为:

    1- 他需要维护一个选择器列表以了解要发布的内容,因此您需要使用咨询消息http://activemq.apache.org/advisory-message.html 维护此列表

    AdvisorySupport.getConsumerAdvisoryTopic()
    

    2- 启动时的消费者向生产者发送一条消息,告知其感兴趣的信息以及如果您想要不同的目的地可能使用哪个目的地,并通知取消订阅或停止兴趣。

    3- 只需保持 Fire-and-Forget EIP 模式

    【讨论】:

      猜你喜欢
      • 2012-02-19
      • 1970-01-01
      • 1970-01-01
      • 2021-08-16
      • 1970-01-01
      • 1970-01-01
      • 2021-12-12
      • 2020-07-05
      • 1970-01-01
      相关资源
      最近更新 更多