我正在尝试编写能够抵御意外情况的MQ客户端。 我用client_acknowledge模式创建了客户端:
ISession session = conn.CreateSession(false, AcknowledgeMode.ClientAcknowledge);
在XMS文档中,有关于CLIENT_ACKNOWLEDGE的信息:
应用程序可以确认收到每条消息 单独地,或者它可以接收一批消息并致电 确认方法仅适用于它收到的最后一条消息。当。。。的时候 确认方法称为自上次收到的所有消息 这个方法被认可了。
客户端从队列中提取10条消息并将其写入数据库。
问题是如何设置此模式并确认每条消息(确保消息传递)?
答案 0 :(得分:1)
当邮件发送到您的应用程序时,它是如何丢失的?
由于您正在处理两种资源,为什么不进行事务处理会话或XA事务处理会话。如果更新数据库存在问题,您可以执行回滚以便重新传递邮件。
<强>更新强>
在交易会话中,确认模式没有意义。调用提交时会确认消息,或者在调用回滚时回滚消息。
如果与IBM MQ队列管理器的连接丢失,则队列管理器将自动回滚所有未提交的消息。所以没有消息丢失。