JMS主题与队列

JMS主题与队列,jms,activemq,Jms,Activemq,我想知道JMS队列和JMS主题之间的区别是什么 说 话题 在JMS中,主题实现发布和订阅语义。当你发布一条消息时,它会发送给所有正在发布的订阅者 感兴趣-因此零到多个订阅者将收到 消息仅限当时具有活动订阅的订阅者 代理收到消息后将获得消息的副本 排队 JMS队列实现负载平衡器语义。只有一个消费者会收到一条消息。如果没有 信息发送时可用的消费者将被保留 直到有消费者可以处理该消息。如果 消费者收到一条消息,但在关闭前未确认该消息 然后,该消息将被重新传递给另一个消费者。排队可以 使多个消费者的消息

我想知道JMS队列和JMS主题之间的区别是什么

话题 在JMS中,主题实现发布和订阅语义。当你发布一条消息时,它会发送给所有正在发布的订阅者 感兴趣-因此零到多个订阅者将收到 消息仅限当时具有活动订阅的订阅者 代理收到消息后将获得消息的副本

排队 JMS队列实现负载平衡器语义。只有一个消费者会收到一条消息。如果没有 信息发送时可用的消费者将被保留 直到有消费者可以处理该消息。如果 消费者收到一条消息,但在关闭前未确认该消息 然后,该消息将被重新传递给另一个消费者。排队可以 使多个消费者的消息负载在整个可用范围内保持平衡 消费者

我想要一个“东西”,它将按照ActiveMQ代理接收消息的顺序向每个订阅者发送消息副本


有什么想法吗?

这意味着一个主题是合适的。队列意味着一条消息只发送给一个可能的订阅者。每个订户都有一个主题。

关于订单保留,请参阅。简而言之:对于单个使用者保留顺序,但对于多个使用者,传递顺序不受保证。

主题用于发布者-订阅者模型,而队列用于点对点。

队列是JMS管理的对象,用于保存等待订阅者使用的消息。当所有订阅者都使用该消息时,该消息将从队列中删除


主题是一个主题的所有订户在消息发布时都会收到相同的消息。

如果您有N个消费者,则:

JMS主题将消息传递到N个(共N个) JMS队列将消息传递给N个队列中的1个

您说您“希望有一个‘东西’可以按照ActiveMQ代理接收消息的顺序向每个订户发送消息副本。”


因此,您希望使用一个主题,以便所有N个订阅者都能获得消息的副本。

aJMS主题是一对多分发模型中的目标类型。 所有使用订阅服务器都会收到相同的已发布消息。你也可以称之为“广播”模式。您可以将主题视为分布式计算中的主题。一些JMS提供者有效地选择以UDP而不是TCP来实现这一点。对于主题来说,消息传递是“开火并忘记”——如果没有人听,消息就会消失。如果这不是您想要的,您可以使用“持久订阅”

JMS队列是消息的1对1目的地。该消息仅由一个消费接收者接收(请注意:一致使用“主题客户端”的订阅者和队列客户端的接收者可避免混淆)。发送到队列的消息将存储在磁盘或内存中,直到有人接收到消息或消息过期。因此,队列(和持久订阅)需要一些主动存储管理,您需要考虑慢用户

我认为,在大多数环境中,主题是更好的选择,因为您总是可以添加额外的组件,而无需更改体系结构。添加的组件可以是监控、日志记录、分析等。
在项目开始时,您永远不知道1年、5年、10年后的需求会是什么样子。改变是不可避免的,拥抱它:-)主题::主题是一对多的交流。。。(多点或发布/订阅) 例:-假设出版商在youtub中发布电影,那么所有订户都会收到通知。。。。 QUEVE::QUEVE是一对一的交流。。。 例:-当发布充电请求时,它将只转到一个qreciever。。。
请始终记住,如果请求转到所有Qreceiver,则在开发适合应用程序的分析队列时会发生多次充值

专业人士

  • 具有透明通信流的简单消息传递模式
  • 可以通过将消息放回队列来恢复消息
缺点

  • 只有一个消费者可以得到信息
  • 意味着生产者和消费者之间的耦合,因为这是一对一的关系
主题

专业人士

  • 多个消费者可以获得一条消息
  • 生产者和消费者之间的脱钩(发布和订阅模式)
缺点

  • 更复杂的通信流
  • 无法为单个侦听器恢复消息

很简单:

队列=插入>退出(发送到单个订户)1:1

主题=插入>广播(发送给所有订户)1:n


队列消息只会被单个使用者使用一次,这就是队列实现负载平衡器的原因。主题订阅可以是:订阅服务器可以在发布后很长时间内收到消息(例如,如果订阅服务器关闭并再次出现).你知道JMS或WSO2 MB中队列的负载平衡是如何工作的吗?这很有趣,因为我试图调试某个订阅者,当发送主题时订阅者没有被调用,但当发送到队列时它工作了。一个示例可以用于简单的社交网络。有人“喜欢”一个帖子。后端将向主题发布“类似帖子”的事件。它由3个订阅者使用:
notificationProcessor
(向海报发送通知)、
karmaProcessor
(将karma传递给喜欢的人和海报)、
feedProcessor
(向上移动到人们的提要中)。当然都是异步的。@Siddhartha,这可能是一个答案-