耐用和非耐用的区别 JMS-Topic。哪个最好使用耐用或非耐用?
Posted
技术标签:
【中文标题】耐用和非耐用的区别 JMS-Topic。哪个最好使用耐用或非耐用?【英文标题】:durable and non-durable difference JMS-Topic. Which is best to use durable or non-durable? 【发布时间】:2016-06-13 04:36:44 【问题描述】:谁能清楚地解释一下 JMS Topic 中什么是持久的和不持久的?
到目前为止,我有服务器和客户端模型,服务器将向客户端发送请求以完成从服务器发送的请求,客户端接受请求并将响应发送回服务器。
我有一种情况,不是服务器发起发送给我的客户端的请求,而是我的客户端必须查看服务器以获取特定请求并将响应发送回服务器。
我可以应用 JMS 主题来解决这个问题吗?如果有人清楚地解释将不胜感激。提前致谢。
【问题讨论】:
【参考方案1】:一旦客户端注册接收某个主题的消息,持久主题就会在客户端断开连接时为该客户端保留消息。因此,如果客户端未连接或无法始终连接,则消息可能会在稍后等待(取决于,某些 JMS 提供程序允许持久消息过期,因此如果客户端长时间未连接,则消息只是不不要永远坐在那里)。
非持久主题意味着客户端仅在主动连接时获取该主题的消息。
在您的用例中,客户端“查找特定请求”的唯一方法是主题是持久的,客户端至少连接一次来自主题的消息,提供者支持持久主题,并且消息自客户端上次连接以来已发送到主题。
如果您正在寻找发送到该主题的每条消息(这是我解释您的要求的一种方式),以便客户端可以在过去任意时间通过查找特定请求进行搜索,JMS听起来不像是解决方案。
【讨论】:
【参考方案2】:没有持久或非持久主题的概念。它是对可以持久或非持久主题的订阅。
非持久订阅意味着只要订阅者应用程序启动并运行,发布就会被传递给订阅者应用程序。应用程序终止后,代理将删除订阅,并且不会再向该订阅者发送任何发布。
另一方面,对于持久订阅,即使订阅者应用程序没有运行,发布也会被传递给订阅。当应用程序关闭时,Broker 将持有此类发布(在队列中)。一旦申请提出,这些出版物将被交付。
【讨论】:
以上是关于耐用和非耐用的区别 JMS-Topic。哪个最好使用耐用或非耐用?的主要内容,如果未能解决你的问题,请参考以下文章
iOS 11.1 到 11.2,iPhone X 有没有更耐用?