2

我想知道在使用 websphere MQ 和 WCF 时如何确保消息的持久性。我希望能够让我的 WCF 进程从队列中挑选消息,并且如果应用程序遇到问题(停电等),我不会丢失消息。如果可能的话,我也希望不必使用事务,因为我想消除分布式事务。

谢谢,

小号

4

2 回答 2

2

嗯,有交易,也有分布式交易。“正确”的答案是在这里使用 WMQ 1-phase commit。这没有 XA 事务的复杂性,但它确实使您能够回滚消息而不会丢失它。事实上,在使用客户端时,您确实应该使用至少 1 阶段提交,以防止消息丢失。

除此之外,总是有“带锁浏览,光标下删除消息”的方法。我很确定您需要进行浏览、锁定和删除的所有操作都暴露在 .NET 下,但也许 Shashi 会发表评论和确认。

于 2012-04-13T21:35:46.860 回答
2

WebSphere MQ WCF 自定义通道具有“保证交付”功能,可确保服务请求或回复被执行且不会丢失。这是 1 阶段提交(也称为 SYNC_POINT in)WMQ。

“保证交付”是服务合同属性。以下是有关该功能的更多详细信息。

于 2012-04-14T05:12:24.127 回答