MSMQ 事务性或可恢复

MSMQ transactional or recoverable

我有一个关于 MSMQ 的问题。如果我使用非事务性队列并使用可恢复参数向其发送消息,消息将存储在磁盘上,以防万一出现问题。但是,如果我想从非事务性队列中拉取消息,是否有某种机制可以确保消息在出现某些问题(服务器错误、数据库关闭...)时留在队列中?

出于某些原因,我不想使用事务队列。非常感谢您的回复。

您可以实施先看后接收流程来模拟交易。

  1. 查看消息以获取内容。
  2. 随意使用内容。
  3. 如果第 2 步完成,则接收消息以有效删除它。
  4. 如果第 2 步失败,执行清理代码并转到第 1 步。