Apache ActiveMQ WCF绑定配置问题:双工或请求-响应?

5
我正在尝试在WCF应用程序中使用Apache.NMS.WCF绑定,但出现以下错误 -
合同要求双向(请求-回复或双工),但绑定“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以支持双工,还是它根本不支持双工?
1个回答

6

像ActiveMQ这样的消息队列通常是单向的设计 - 您只能将消息放入其中,就这样。

如果您确实需要回复,则真正的解决方案是反转角色:您在主契约上发送消息的服务(单向)将成为客户端,在第二个队列上向您发送响应,您的应用程序作为服务器侦听该队列。

请参阅一些MSDN文档和其他相关资源:

这些示例通常使用MSMQ,因为它是WCF原生支持的,但将您的任务分解为两个单向契约并设置和使用两个独立的请求和响应队列的基本原则同样适用于ActiveMQ。


我给这个回答点了踩,因为它是错误的。ActiveMQ 提供了多种请求-响应的方式,其中之一就是使用临时队列作为消息的返回地址。这个“临时队列”有一个临时消费者。 - Noctris
2
@Noctris:这个也适用于WCF绑定吗?问题显然是关于从WCF使用ActiveMQ,而不是它的一般能力... - marc_s

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接