Я пытаюсь использовать Apache. Привязка NMS.WCF для приложения WCF и получает следующую ошибку -
Контракт требует, чтобы TwoWay (или ответ запроса или дуплекс), но Связывающий 'NmsBinding' не поддерживал его или не был настроен правильно для поддержки его.
Моя system.service модель похожа на это -
<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>
Существует ли способ настроить Apache NMS, чтобы быть дуплексом, или разве он просто не поддерживает его?
Очередь сообщений, подобная ActiveMQ, как правило, по своей конструкции только односторонняя - в нее можно бросать сообщения, и все такое.
Реальным решением, если вам все-таки нужно вернуть ответы, является изменение ролей: сервис, которому вы отправили сообщение по вашему основному контракту (односторонний), станет клиентом, который отправит вам ответ во вторую очередь, в которой ваше приложение прослушивает в качестве сервера.
Смотрите некоторые MSDN документы и другие ресурсы по темам:
В образцах, как правило, используется MSMQ, так как это изначально поддерживается WCF, но основные принципы разделения задач на два отдельных контракта с односторонним движением, а также порядок установки и использования двух отдельных очередей запросов и ответов должны применяться и к ActiveMQ.