- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
根据我们的业务需求,我们需要将更新传输给分布在全国各地的数千个客户。事实是,许多这些客户端使用 3g 网络连接到我们,因此,会发生许多连接/断开连接......我们需要提供的更新是诸如“企业 A 无法再兑现”或“企业 B 能够再次兑现", 我们正在考虑使用 ActiveMQ 持久主题来提供这些更新。据我了解,一旦客户端连接到持久主题,即使他失去了连接,每当他回来时,他都会收到离线时发送到该主题的消息。 一个大问题是,如果客户端启动我们的系统,但在订阅之前消息已发送到他正在订阅的持久主题,该怎么办?本案例为:
持久主题已创建
消息 1 发送到持久主题
消息 2 发送到持久主题
客户端A订阅持久主题
消息3发送到持久主题
消息 4 发送到持久主题
客户端A下线
消息 5 发送到持久主题
消息 6 发送到持久主题
客户端A上线
根据 ActiveMQ 论文,客户端 A 将毫无问题地接收消息 3 到 6。但是消息 1 和消息 2 又如何呢?我们不能失去这些信息......
提前致谢!
最佳答案
“消息 1-2”应该可用多长时间。考虑在消息传递多年后添加客户端订阅者。所有这些都应该交付吗?
如果您打算将消息的完整历史记录提交给新客户端,我建议使用一些“初始加载”过程,客户端会在其中询问历史记录。也许使用 JMS 请求回复或其他一些功能。
无论如何,如果您希望您的客户端能够在创建之前获取一些消息,您可以使用retroactive consumer .
然后您需要在代理端指定恢复策略。
您可以根据时间、计数、内存大小或类似内容进行恢复。查看选项和设置 here .
使用目标名称,例如:UPDATE.TOPIC?consumer.retroactive=true
在客户端启用此功能。
关于java - ActiveMQ 持久主题、消息预订阅?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29565899/
我是一名优秀的程序员,十分优秀!