【发布时间】:2013-09-12 10:52:38
【问题描述】:
我有一个 JMS 主题,它会产生独特的消息。
我在 n 台机器(clients)上部署了一个简单的 webapp,它所做的只是将使用的 msg 放入另一个系统(目标系统)。
注意:
- 我确实不可以控制 JMS。
- 我确实可以控制客户端。
- 我确实不可以控制将由客户端接收消息的目标系统。
我的问题是:
如何确保消息被其中一个客户端写入一次(到目标系统),并且永远不会被另一个客户端再次写入(好像 JMS 是队列而不是主题),知道每个 msg 都有一个 uniqueId 吗?
我正在考虑两种解决方案:
-
创建另一个使用该主题的 JMS 队列,并且该队列将由 n 个客户端之一为每个 msg 使用一次。
-
有某种共享位置(memcache),其中包含已使用 msgs 的消息 ID,并且在客户端将已使用 msg 发送到目标系统之前,我必须检查共享存储(memcache)是否具有此 id之前,如果没有,则发送到目标系统。
你怎么看?
更新:
最终得到消息的系统不是 RDBMS,甚至不在我的控制之下。我只是将一些味精从一个系统传送到另一个系统。 (其实是 Apache Flume 不受我控制)
【问题讨论】:
标签: database jms message-queue jms-topic