Pol*_*uin 173 activemq-classic jms
我想知道JMS队列和JMS主题之间的区别.
它说,从ActiveMQ页面
话题
在JMS中,Topic实现了发布和订阅语义.当您发布消息时,它会发送给所有感兴趣的订阅者 - 因此,零到多订阅者将收到该消息的副本.只有在经纪人收到消息时拥有有效订阅的订阅者才能获得该消息的副本.
队列
JMS队列实现负载均衡器语义.一个消费者将收到一条消息.如果在发送消息时没有可用的消费者,则将保留消费者,直到有消费者可以处理消息为止.如果消费者收到消息并且在关闭之前没有确认消息,那么该消息将被重新传递给另一个消费者.队列可以让许多消费者在可用消费者之间对消息进行负载平衡.
我希望有一个"东西",它将以与ActiveMQ代理接收消息的顺序相同的顺序向每个订阅者发送消息的副本.
有什么想法吗?
Axe*_*ehl 25
甲JMS主题是目的地的分布的1对多的模型的类型.所有消费订户都收到相同的已发布消息.您也可以将其称为"广播"模型.您可以将主题视为分布式计算的Observer设计模式中的Subject的等效项.一些JMS提供程序有效地选择将其实现为UDP而不是TCP.对于主题,消息传递是"即发即忘" - 如果没有人听,消息就会消失.如果这不是你想要的,你可以使用'持久订阅'.
甲JMS队列是1对1的目的地的消息.该消息仅由一个消费接收者接收(请注意:始终使用订阅者的'主题客户端和接收者用于队列客户端避免混淆).发送到队列的消息存储在磁盘或内存中,直到有人拿起它或它过期.因此队列(和持久订阅)需要一些主动存储管理,您需要考虑缓慢的消费者.
在大多数环境中,我认为,主题是更好的选择,因为您总是可以添加其他组件而无需更改架构.添加的组件可能是监控,日志记录,分析等.您在项目开始时就不会知道1年,5年,10年的要求是什么样的.改变是不可避免的,拥抱它:-)
Dan*_*ník 18
就这么简单:
队列 =插入>提取(发送给单个订户)1:1
主题 =插入>广播(发送给所有订户)1:n
abh*_*nyu 10
队列
优点
缺点
话题
优点
缺点
| 归档时间: |
|
| 查看次数: |
151133 次 |
| 最近记录: |