2011-10-12 14 views
7

Qualcuno sa come implementare gli ascoltatori MSMQ * utilizzando WCF *?MSMQ Ascoltatori che utilizzano WCF

+0

Can sei più specifico? – Xhalent

+0

Tante informazioni su SO: http://stackoverflow.com/questions/372935/wcf-and-msmq http://stackoverflow.com/questions/2154853/msmq-and-wcf-service http://stackoverflow.com/questions/1526958/msmq-wcf-and-flaky-servers –

+0

Ho due servizi wcf compilati, 1 per l'invio di dati alla coda MSMQ e un altro viene chiamato da MSMQ listener quando è presente un inserimento nella coda MSMQ.Ora Voglio sapere come e dove ho bisogno di scrivere questo listener MSMQ. –

risposta

0

Il binding MSMQ è possibile su WCF. È possibile fare riferimento a http://blogs.msdn.com/b/tomholl/archive/2008/07/12/msmq-wcf-and-iis-getting-them-to-play-nice-part-1.aspx per ottenere informazioni più pronte.

+0

ho già ricevuto quel link in ogni caso grazie per interesse. Voglio solo sapere come dobbiamo chiamare il servizio wcf che sta avendo netmsmqbinding ? –

+0

Quindi stai cercando di implementare qualcosa di diverso da ciò che è descritto in quel collegamento? L'articolo contiene anche un codice di esempio. – Kangkan

3

Non è necessario implementare manualmente un listener code sul servizio.

Semplicemente creando il contratto di servizio si specifica il metodo del gestore che verrà chiamato quando un messaggio arriva in coda.

Probabilmente (o dovrebbe) avere qualcosa di simile:

[OperationContract(IsOneWay = true, Action = "*")] 
void HandleMyMessage (MsmqMessage<String> message); 

Questo farà sì che il metodo HandleMyMessage() nell'implementazione servizio verrà chiamato quando un messaggio viene recapitato.

UPDATE

In risposta alla tua domanda nel commento qui sotto, per definire l'indirizzo di coda si può fare questo nella configurazione <System.ServiceModel>:

<services> 
    <service 
     name="Microsoft.ServiceModel.Samples.OrderProcessorService" 
     behaviorConfiguration="CalculatorServiceBehavior"> 
    <host> 
     <baseAddresses> 
     <add baseAddress="http://localhost:8000/ServiceModelSamples/service"/> 
     </baseAddresses> 
    </host> 
    <!-- Define NetMsmqEndpoint --> 
    <endpoint address="net.msmq://localhost/private/ServiceModelSamplesTransacted" 
       binding="netMsmqBinding" 
       contract="Microsoft.ServiceModel.Samples.IOrderProcessor" /> 
    <!-- the mex endpoint is exposed at http://localhost:8000/ServiceModelSamples/service/mex --> 
    <endpoint address="mex" 
       binding="mexHttpBinding" 
       contract="IMetadataExchange" /> 
    </service> 
</services> 

Da qui: http://msdn.microsoft.com/en-us/library/ms789032.aspx

+0

Grazie mille. Quindi intendi dire che solo un servizio soddisfa sia le operazioni di invio che quelle di ricezione, giusto? –

+0

Dove specifichi queuename, a cui ho bisogno di ascoltare? –

+0

Vedere il mio aggiornamento alla domanda –

Problemi correlati