在我们的业务需求中,我们需要将更新传输给分布在全国各地的数千个客户。问题是,这些客户端中的许多使用 3g 网络连接到我们,因此,发生了许多连接/断开连接......我们需要提供的更新是“企业 A 不能再兑现”或“企业 B 能够再次兑现”,我们正在考虑使用 ActiveMQ 持久主题来提供这些更新。据我了解,一旦客户端连接到一个持久主题,即使他失去连接,每当他回来时,他都会在离线时收到发送到该主题的消息。最大的问题是,如果客户启动我们的系统,但消息被发送到他订阅的持久主题,在他的订阅之前。这个案例是:
创建持久主题
消息 1 被发送到持久主题
消息 2 被发送到持久主题
客户端 A 订阅持久主题
消息 3 被发送到持久主题
消息 4 被发送到持久主题
客户端 A 下线
消息 5 被发送到持久主题
消息 6 被发送到持久主题
客户端 A 上线
根据 ActiveMQ 论文,客户端 A 将毫无问题地接收消息 3 到 6。但是消息 1 和 2 呢?我们不能放弃这些信息......
提前致谢!