2010-01-13 5 views
5

Estoy tratando de utilizar los enlaces Apache.NMS.WCF para una aplicación WCF y obtener el siguiente error -dúplex o de petición-respuesta con Apache ActiveMQ WCF Encuadernación pregunta de configuración

Contrato requiere TwoWay (ya sea de petición-respuesta o dúplex), pero el enlace 'NmsBinding' no lo admite o no está configurado correctamente para admitirlo.

Mi modelo system.service se parece a esto -

<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> 

¿Hay una manera de configurar el NMS Apache ser dúplex o solo lo soporta?

Respuesta

6

Normalmente, una cola de mensajes como ActiveMQ normalmente solo es unidireccional: puede colocar mensajes en ella y eso es todo.

La verdadera solución si necesita respuestas es revertir las funciones: el servicio al que envió un mensaje en su contrato principal (unidireccional) se convertirá en el cliente que le devuelve una respuesta en una segunda cola, en el que tu aplicación está escuchando como el servidor.

Ver algunos documentos de MSDN y otros recursos sobre los temas:

Las muestras generalmente usan MSMQ dado que WCF lo admite de forma nativa, pero los principios básicos de dividir las tareas en dos contratos unidireccionales separados y cómo configurar y utilizar dos colas de solicitud y respuesta separadas también deben aplicarse a ActiveMQ.

+0

Gracias por la información Marc. –

+0

He desvalorizado esto ya que es incorrecto. ActiveMQ le ofrece múltiples formas de hacer solicitud-respuesta. Una de ellas es la cola temporal, que puede usar como dirección de retorno en un mensaje. Esta "cola temporal" tiene un consumidor temporal. – Noctris

+2

@Noctris: ¿y esto funciona también con un enlace WCF? La pregunta era claramente sobre el uso de ActiveMQ ** de WCF **, no sobre sus capacidades generales ... –

Cuestiones relacionadas