2010-01-13 12 views
5

Sto cercando di usare le associazioni Apache.NMS.WCF per un'applicazione WCF e ottenere il seguente errore -Duplex o richiesta-risposta con Apache ActiveMQ WCF Binding domanda configurazione

Contratto richiede TwoWay (sia di richiesta-risposta o duplex), ma Binding 'NmsBinding' non lo supporta o non è configurato correttamente per supportarlo.

Il mio modello system.service assomiglia a questo -

<bindings> 
     <nmsBinding> 
      <binding 
       name="myNMSBinding" 
       destination="test.queue" 
       destinationType="TemporaryQueue" 
       > 
      </binding> 
     </nmsBinding> 
    </bindings> 

    <extensions> 
     <!--<bindingElementExtensions> 
      <add name="nmsTransPort" 
       type="Apache.NMS.WCF.NmsTransportElement, Apache.NMS.WCF, Version=1.1.0.1642, Culture=neutral, PublicKeyToken=82756feee3957618" /> 
     </bindingElementExtensions>--> 
     <bindingExtensions> 
      <add name="nmsBinding" 
       type="Apache.NMS.WCF.NmsBindingCollection, Apache.NMS.WCF, Version=1.1.0.1642, Culture=neutral, PublicKeyToken=82756feee3957618" 

       /> 
     </bindingExtensions> 
    </extensions> 

    <services> 
     <service name="WcfService1.Service1" behaviorConfiguration="WcfService1.Service1Behavior"> 
      <!-- Service Endpoints --> 
      <endpoint 
       address="tcp://localhost:61616" 
       binding="nmsBinding" 
       bindingConfiguration="myNMSBinding" 
       contract="WcfService1.IService1" 
       /> 
     </service> 
    </services> 

C'è un modo per configurare Apache NMS essere duplex o lo fa solo lo supporta?

risposta

6

Una coda di messaggi come ActiveMQ di solito è progettata solo da una cosa unidirezionale - è possibile rilasciare messaggi in esso e questo è tutto.

La vera soluzione se si ha bisogno di risposte è di invertire i ruoli: il servizio a cui hai inviato un messaggio sul tuo contratto principale (a senso unico) diventerà il client che ti rimanda una risposta su una seconda coda, su cui la tua app è in ascolto come server.

Vedere alcuni documentazione MSDN e altre risorse sui temi:

Gli esempi utilizzano in genere MSMQ poiché è nativamente supportato da WCF, ma i principi di base per suddividere le attività in due contratti a senso unico separati e come impostare e utilizzare due code di richiesta e risposta distinte dovrebbero applicarsi anche ad ActiveMQ.

+0

Grazie per l'informazione Marc. –

+0

Ho downvoted questo dato che non è corretto. ActiveMQ ti offre diversi modi di fare richiesta-risposta. Uno di questi è la coda temporanea che è possibile utilizzare come indirizzo di ritorno su un messaggio. Questa "coda temporanea" ha un consumatore temporaneo .. – Noctris

+2

@Noctris: e funziona anche con una associazione WCF ?? La domanda era chiaramente sull'uso di ActiveMQ ** da WCF ** - non sulle sue capacità generali ... –

Problemi correlati