我对MSMQ 4.0很新。我陷入了下面的情景; 服务A获取用户详细信息并返回用户ID。 然后,服务B使用用户ID进行结算细分。 现在我必须排队这些步骤。我打算使用Transaction Queue。 有人可以帮助我 1)从第一条消息中获取ID并将其包含在第二条消息中。 2)如果至少一步失败,我必须回滚(事务队列为我做)重试或5次,如果仍然失败,则将其移至VerifyAdminQueue以供Admin验证。我不喜欢使用DeadLetter队列等,
提前致谢。
答案 0 :(得分:1)
使用MSMQ队列构建的服务确实是单向的。这意味着没有内置的响应概念。有许多方法可以使用MSMQ实现请求 - 响应通信模式,但是所有这些方法都需要构建并自己将响应发送回调用方。
使用单向操作,回滚非常简单,实际上MSMQ将回滚消息传输中的任何失败步骤。然而,诸如请求 - 响应之类的更复杂的操作缺少MSMQ中的任何事务概念,因此跨越多个消息传输步骤的任何回滚将要求您编写补偿代码。