JSM的topic和queue的区别

Posted 豆芽的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSM的topic和queue的区别相关的知识,希望对你有一定的参考价值。

JMS(Java消息服务)中,Topic实现publish和subscribe语义。一条消息被publish时,它将发到所有感兴趣的订阅者,所以零到多个 subscriber(电脑词汇中解释为“用户“)将接收到消息的一个拷贝。但是在消息代理接收到消息时,只有激活订阅的subscriber能够获得消息的一个拷贝。 

JMS Queue执行load balancer语义。一条消息仅能被一个consumer收到。如果在message发送的时候没有可用的consumer,那么它将被保存一直到能处理该message的consumer可用。如果一个consumer收到一条message后却不响应它,那么这条消息将被转到另一个consumer 那儿。一个Queue可以有很多consumer,并且在多个可用的consumer中负载均衡

Jms规范里的两种message传输方式Topic和Queue,两者的对比如下表():技术分享

 

 

确认消息的方式有如下三种

AUTO_ACKNOWLEDGE(自动通知)

CLIENT_ACKNOWLEDGE(客户端自行决定通知时机)

DUPS_OK_ACKNOWLEDGE(延时//批量通知)

如果使用的是 客户端自行决定通知时机方式,那么需要在MessageListener显式调用message.acknowledge()来通知服务器。服务器接收到通知后采取相应的操作。

 
6


以上是关于JSM的topic和queue的区别的主要内容,如果未能解决你的问题,请参考以下文章

C++ queue 和 deque的区别

topic和theme有啥区别

消息队列中点对点与发布订阅区别

springboot rabbitmq direct exchange和topic exchange 写法上关于路由键的区别

请问topic与theme有啥区别?

title 和 topic的区别是啥?