2012-05-21 21 views
0

我是MSMQ 4.0的新手。我陷入了下面的情况; 服务A获取用户详细信息并返回用户标识。 然后服务B通过用户标识取账单退货。 现在我必须排队这些步骤。我打算使用事务队列。 有人可以帮我 1)从第一条消息获取ID并将其包含在第二条消息中。 2)如果至少有一个步骤失败,我必须回滚(事务队列为我做)重试或5次,如果它仍然失败,然后将其移动到VerifyAdminQueue由Admin.I验证不喜欢使用DeadLetter队列等,如何从send.Message获取返回值,并将返回的值作为MSMQ中第二条消息的一部分?

在此先感谢。

回答

1

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

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