任何人都能清楚地解释JMS主题中的持久性和非持久性吗?
我有服务器和客户端模型,直到现在服务器将请求发送到客户端完成从服务器发送的请求,客户端接受请求蚂蚁发送回服务器的响应。
我有一个场景,而不是服务器发起请求发送到我的客户端,我的客户端必须查看服务器的特定请求并将响应发送给服务器。
我可以应用JMS主题来解决这个问题吗?如果有人明确解释将不胜感激。提前谢谢。
答案 0 :(得分:2)
没有主题持久或非持久的概念。这是一个可以持久或不耐用的主题订阅。
非持久订阅意味着只要发布并运行,发布将被发送到订阅者应用程序。一旦应用程序终止,代理将删除订阅,并且不会再向该订户发送出版物。
另一方面,对于持久订阅,即使订阅者应用程序未运行,也会将发布传递到订阅。当应用程序关闭时,代理将保留此类出版物(在队列中)。一旦申请出现,将发布这些出版物。
答案 1 :(得分:0)
一旦客户端注册接收主题的消息,持久主题会在客户端断开连接时为该客户端保留消息。因此,如果客户端不能或不能始终连接,则消息可能在稍后等待(取决于,某些JMS提供商允许持久消息到期,因此如果客户端长时间未连接,则消息只会消息永远坐在那里。
非持久性主题意味着客户端仅在主动连接时才获取该主题的消息。
在您的使用案例中,客户端可以“查找特定请求”的唯一方式是主题是持久的,客户端至少连接过一次来自主题的消息,提供者支持持久主题和消息自上次客户端连接以来被发送到该主题。
如果您正在查找发送到主题的每条消息(这是我解释您的要求的一种方式),那么客户端可以搜索在过去的任意时间查找特定请求,JMS听起来不像解决方案。