如何从send.Message获取返回值并将返回的值包含在MSMQ中作为第二条消息的一部分?

时间:2012-05-21 15:30:49

标签: visual-studio-2010 c#-4.0 windows-server-2008 msmq

我对MSMQ 4.0很新。我陷入了下面的情景; 服务A获取用户详细信息并返回用户ID。 然后,服务B使用用户ID进行结算细分。 现在我必须排队这些步骤。我打算使用Transaction Queue。 有人可以帮助我 1)从第一条消息中获取ID并将其包含在第二条消息中。 2)如果至少一步失败,我必须回滚(事务队列为我做)重试或5次,如果仍然失败,则将其移至VerifyAdminQueue以供Admin验证。我不喜欢使用DeadLetter队列等,

提前致谢。

1 个答案:

答案 0 :(得分:1)

使用MSMQ队列构建的服务确实是单向的。这意味着没有内置的响应概念。有许多方法可以使用MSMQ实现请求 - 响应通信模式,但是所有这些方法都需要构建并自己将响应发送回调用方。

使用单向操作,回滚非常简单,实际上MSMQ将回滚消息传输中的任何失败步骤。然而,诸如请求 - 响应之类的更复杂的操作缺少MSMQ中的任何事务概念,因此跨越多个消息传输步骤的任何回滚将要求您编写补偿代码。