【发布时间】:2012-04-05 22:28:40
【问题描述】:
我们已经研究 HornetQ 几个星期了。
在我们的业务中,我们有许多“delta”消息,并且(不幸的是......)它们没有版本化(由于这是一个国际标准,它们不会被版本化)。这意味着两次发出相同的消息显然是不受欢迎的。尽管如此,该标准承认它确实无法避免,并指示发件人在这种情况下将消息标记为可能重复。
我翻阅了 HornetQ 的文档,其中谈到了很多关于避免服务器复制 received 的内容,但我找不到任何关于避免 生成 重复的内容。
为了更清楚,假设以下情况:
- 1 个总部服务器
- 1 名消费者
在名义场景中,消费者在队列中获取一条消息,将其发送给第 3 方,并在收到确认后,向服务器确认消息,以便将其从队列中删除。
现在,这里的弱点是 ack 部分。第 3 方可能收到并处理了消息,但(出于某种原因)ack 失败并且消息没有出列。
我意识到总部不可能知道消息已完全传递,但我希望它知道传递已已尝试并且消息很可能就第 3 方而言,将是重复的。
有没有办法让消费者知道这个可能已经发送状态,以便它可以适当地标记消息?
【问题讨论】:
标签: duplicates hornetq