Как создать службу недоставленных сообщений WCF для MSMQ3.0 - PullRequest
0 голосов
/ 03 марта 2010

Я пытаюсь создать службу, считывающую недоставленное письмо из очереди недоставленных сообщений транзакционной системы.

Конфигурация службы выглядит следующим образом:

<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();

Пока все выглядит так, как описано во многих книгах и учебных пособиях, но когда я генерирую мертвые письма в транзакционной очереди недоставленных сообщений, служба не вызывается. Что не так в моем сервисе?

Спасибо за помощь Enyra

1 Ответ

0 голосов
/ 03 марта 2010

Я нашел проблему, которая довольно обманчива. Конечная точка клиента msmq использует конфигурацию привязки с, поэтому службе очереди недоставленных сообщений также требуется привязка, которая не определяет режим безопасности.

...