基于消息的系统中的消息责任

时间:2014-04-23 06:22:32

标签: integration apache-camel messaging

我们正在开发一个集成两个系统的组件。两个系统都使用消息总线(Service Bus和ActiveMQ)进行通信,它们都产生消息。这些消息包含在传输过程中不会丢失的关键数据。

我们的组件使用Apache Camel来集成这两个系统。如果我们使用“默认”消息传递原则,则Apache Camel会消耗来自一条总线的消息,对其进行处理,然后将其转发到另一个队列。但是,我们的客户担心这会导致传输中丢失消息的风险,并且消息的责任从系统传递到系统。我们客户的建议是将消息留在发件人队列中,直到我们确认它已在其他系统中收到。 我觉得这个解决方案为我们的系统带来了全新的复杂性,可能不是最优的,因为我们面临着消息卡在队列中的风险。

是否有处理这种情况的最佳做法?

1 个答案:

答案 0 :(得分:0)

使用JMS事务,这将保证在客户端成功接收消息之前不会从队列中删除消息...

请参阅http://camel.apache.org/transactional-client.html

http://tmielke.blogspot.com/2012/03/camel-jms-with-transactions-lessons.html