加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – JMS主题与队列 – 意图

发布时间:2020-12-14 19:35:24 所属栏目:Java 来源:网络整理
导读:我试图了解使用Queue的用例. 我的理解: 队列意味着一对一.唯一的用例(如果不罕见,很少)将是:消息仅用于一次消费. 但即使在这些情况下,我也可能想要使用Topic(只是为了将来安全).唯一需要特别注意的是使订阅持久.或者,在特殊情况下,我会使用桥接/调度机制.
我试图了解使用Queue的用例.

我的理解:
队列意味着一对一.唯一的用例(如果不罕见,很少)将是:消息仅用于一次消费.

但即使在这些情况下,我也可能想要使用Topic(只是为了将来安全).唯一需要特别注意的是使订阅持久.或者,在特殊情况下,我会使用桥接/调度机制.

鉴于上述情况,我总是(或在大多数情况下)想要发布主题.订阅者可以是持久主题或分派队列.

请让我知道我在这里缺少什么,或者我错过了原来的意图?

解决方法

如果您根据实际示例考虑,何时使用队列的设计要求很简单:

>提交在线订单(完全一次处理,以避免收取信贷
卡两次)
>私人点对点聊天(每个消息只有一个接收者)
>并行任务分配(在网络系统中的许多工作人员之间分配任务)

…以及何时使用主题的示例……

>向多个订户播放新闻;通知服务,股票代码等
>电子邮件客户端(独特的持久订阅者;当您断开连接时仍然可以收到电子邮件)

你说…

But even in those cases,I may want to use Topic (just to be future
safe). The only extra case I would have to do is to make (each)
subscription durable. Or,I special situations,I would use bridging /
dispatcher mechanism.

你过度设计了这个设计.确实,您可以使用主题和持久订阅者完成一次处理,但您只能使用一个持久的订阅者;当您为该主题启动另一个订阅者时,您将获得对同一消息的重复处理,更不用说,单个持久订阅者几乎不是可扩展的解决方案;它肯定会成为你系统的瓶颈.使用队列,您可以在同一队列的100个节点上部署1000个接收器,并且您仍然可以对单个消息进行一次性处理.

你说…

Give above,I would always (or in most cases) want to publish to a
topic. Subscriber can be either durable topic(s) or dispatched
queue(s).

使用带有主题订阅者的调度队列有点多余.在使用队列时,你基本上可以进行异步调度,那么为什么不只是使用队列?…没有理由在它前面放置一个主题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读