0

トランザクション システムのデッド レター キューからデッド レターを読み取るサービスを作成しようとしています。

サービス構成は次のようになります。

<service name="NotificationDeadLetterQueueService">
 <endpoint
  address="net.msmq://localhost/system$;DeadXact"
  binding="netMsmqBinding"
  contract="INotificationService"
/>
</service>

私のサービスインターフェース:

[ServiceContract]
public interface INotificationService
{
[OperationContract(IsOneWay=true)]
[NetDataContractSerializerFormatAttribute]
void HandleNotification(Notification notification);
}

私のサービスの実装では:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class NotificationDeadLetterQueueService : INotificationService
{
   #region INotificationService Members

   [OperationBehavior(TransactionScopeRequired = true)]
   public void HandleNotification(Notification notification)
   {
      throw new NotImplementedException();
   }

   #endregion
}

そして、次のようにホストを起動します。

ServiceHost serviceHost = new ServiceHost(typeof(NotificationDeadLetterQueueService));
serviceHost.Open();

これまでのところ、すべてが多くの本やチュートリアルで説明されているように見えますが、トランザクションのデッドレター キュー内でデッドレターを生成すると、サービスが呼び出されません。サービスの何が問題になっていますか?

助けてくれてありがとう

4

1 に答える 1

0

私は問題を見つけました。これはかなりのトリックです。msmq クライアント エンドポイントは とのバインド構成を使用するため、配信不能キュー サービスにも、セキュリティ モードを none に定義するバインドが必要です。

于 2010-03-03T16:09:12.323 に答える