1

msmq メッセージを追加する wcf サービスがあります。プライベート キューからメッセージを読み取り、メッセージを処理する Windows リスナーもあります。

protected override void OnStart(string[] args)
{
// initialises the queue and sets QueueAccessMode.Receive
MessageQueue queue...;

queue.ReceiveCompleted += ProcessEvent;
queue.BeginReceive();
}

public void ProcessEvent(Object source, ReceiveCompletedEventArgs asyncResult)
{
MessageQueue queue = (MessageQueue)source;
try
{

 Message msg = queue.EndReceive(asyncResult.AsyncResult);
 msg.Formatter = new XmlMessageFormatter(new[] { typeof(MyEvent) });

try

{
MyEvent e = (MyEvent) msg.Body;
Process(e);

}catch(exception e)

{
  HandleMessageFault(msg, queue);
 //  how can i put this message back in the queue or another queue at this point?
// will the msmq put it back in the queue automatically ?

}


}
catch()
{

// or how to handle here ?

}

}

メッセージを同じキューに戻そうとしましたが、機能していないように見えますが、エラーも発生しません

private void HandleMessageFault(Message message, MessageQueue currentQueue)
    {
        message.AppSpecific++;            

        using (TransactionScope scope = new      TransactionScope(TransactionScopeOption.Required))
        {
            currentQueue.Send(message);    
            scope.Complete();
        }


    }
4

0 に答える 0