Come creare un servizio WCF lettera morta per MSMQ3.0
-
24-09-2019 - |
Domanda
Sto cercando di creare un servizio di lettura della lettera morta dal sistema transazionale di coda lettera morta.
I servizi di configurazione aspetto come questo:
<service name="NotificationDeadLetterQueueService">
<endpoint
address="net.msmq://localhost/system$;DeadXact"
binding="netMsmqBinding"
contract="INotificationService"
/>
</service>
La mia interfaccia di servizio:
[ServiceContract]
public interface INotificationService
{
[OperationContract(IsOneWay=true)]
[NetDataContractSerializerFormatAttribute]
void HandleNotification(Notification notification);
}
Con la mia implementazione del servizio:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class NotificationDeadLetterQueueService : INotificationService
{
#region INotificationService Members
[OperationBehavior(TransactionScopeRequired = true)]
public void HandleNotification(Notification notification)
{
throw new NotImplementedException();
}
#endregion
}
E iniziare l'host in questo modo:
ServiceHost serviceHost = new ServiceHost(typeof(NotificationDeadLetterQueueService));
serviceHost.Open();
Finora tutto sembra descritte in molti libri e tutorial, ma quando ho generare vicoli lettere all'interno della transazionale dead-letter queue il servizio non venga invocato. Cosa c'è di sbagliato nel mio servizio?
Grazie per l'aiuto Enyra
Soluzione
Ho trovato il problema, che è molto trucco. L'endpoint client MSMQ utilizza una configurazione di legame con, in modo che il servizio di coda delle lettere ha anche bisogno di un legame che definisce la modalità di sicurezza a nessuno.