Sto cercando di gestire i messaggi non elaborabili in WCF con trasporto MSMQ.Gestione messaggi non elaborati in WCF MSMQ 4.0
Ho seguito il link sottostante per creare i servizi originali e antiveleno.
http://msdn.microsoft.com/en-us/library/aa395218.aspx
L'unica differenza è invece di sé hosting, ho ospitato i 2 servces in IIS con un unico progetto di accoglienza.
La configurazione di entrambi i servizi è riportata di seguito.
<services>
<service behaviorConfiguration="MainMSMQWCFService.Service1Behavior"
name="MainMSMQWCFService.OrderProcessorService">
<endpoint address="net.msmq://localhost/private/servicemodelsamplespoison"
binding="netMsmqBinding" bindingConfiguration="PoisonBinding"
contract="MainMSMQWCFService.IOrderProcessor" />
</service>
<service behaviorConfiguration="MainMSMQWCFService.PoisonHandlingServiceBehavior"
name="MainMSMQWCFService.PoisonHandlingService">
<endpoint address="net.msmq://localhost/private/servicemodelsamplespoison;poison"
binding="netMsmqBinding"
bindingConfiguration="PoisonBinding2"
contract="MainMSMQWCFService.IOrderProcessor">
</endpoint>
</service>
</services>
Entrambi i servizi funzionano correttamente.
Il problema è quando il messaggio viene inserito nella coda velenosa, il servizio veleno non sta elaborando il messaggio. Ho osservato i messaggi nella coda Poison, che hanno come target solo il servizio originale. allora come può trattarli il servizio avvelenato? dopo aver esplorato MSDN, ho avuto modo di sapere che impostando l'attributo Comportamento del servizio, il canale WCF si occupa di questo problema. Il seguente paragrafo spiega lo stesso.
"I messaggi nella coda dei messaggi non elaborati sono messaggi indirizzati al servizio che elabora il messaggio, che potrebbe essere diverso dall'endpoint del servizio messaggi non codificati. Pertanto, quando il servizio messaggi non elaborati legge i messaggi dalla coda, Il livello canale WCF trova la mancata corrispondenza tra i punti finali e non invia il messaggio, in questo caso il messaggio viene indirizzato al servizio di elaborazione degli ordini ma viene ricevuto dal servizio messaggi non elaborati. Per continuare a ricevere il messaggio anche se il messaggio è indirizzato a un endpoint diverso, è necessario aggiungere un comportamento di servizio per filtrare gli indirizzi in cui il criterio di corrispondenza deve corrispondere a qualsiasi endpoint del servizio a cui è indirizzato il messaggio. Ciò è necessario per elaborare correttamente i messaggi letti dalla coda dei messaggi non elaborati. "
Ma il mio servizio veleno non sta elaborando i messaggi avvelenati?
Non riesco a capire il problema.
Hmmmm, è possibile ospitare solo i binding http in IIS. Intendi? –