【问题标题】:WCF MsmqIntegrationBindingWCF MsmqIntegrationBinding
【发布时间】:2011-11-16 18:18:45
【问题描述】:

是否必须通过使用 MsmqIntegrationBinding 的进程将从 MSMQ 队列中提取的消息添加到队列中,以便 WCF 服务使用 MsmqIntegrationBinding 从队列中提取它们?我们有一个遗留进程,它使用 System.Messaging 将 xml 有效负载写入队列,当我运行我的进程以尝试从队列中挑选消息时,没有任何反应(意味着消息留在队列中)。我只是想知道是否使用另一个进程将消息入队,您仍然可以使用 WCF / MsmqIntegrationBinding 将消息出队吗?

我知道理想情况下您应该使用 DataContracts 和 NetMsmqBinding,但不幸的是,在他的情况下,我们无法修改将消息入队的过程。

我相信你可以说我对 WCF / MSMQ 仍然很无知,所以也许解决方案很简单。

任何建议将不胜感激。

谢谢,

S

【问题讨论】:

    标签: c# xml wcf msmq


    【解决方案1】:

    MsmqIntegrationBinding 可以使用不同的格式化程序来读取/写入数据到队列。这可以通过设置绑定的 serializationFormat 属性来完成。例如,要与 COM 客户端进行互操作,请将 serializationFormat 设置为 ActiveX。要与 .net 客户端进行互操作,请将其设置为 Xml。

    <service name="MyQueueListenner">
    
        <!-- Active X endpoint -->
        <endpoint address="msmq.formatname:DIRECT=OS:.\private$\myQueue"
                  binding="msmqIntegrationBinding"
                  bindingConfiguration="COMConfig"
                  contract="MyContract" />
    
        <!-- .Net endpoint-->
        <endpoint address="msmq.formatname:DIRECT=OS:.\private$\myOtherQueue"
                  binding="msmqIntegrationBinding"
                  bindingConfiguration="DotNetConfig"
                  contract="MyContract" />
    
      </service>
      ...
    
      <msmqIntegrationBinding>
        <binding serializationFormat="ActiveX" name="COMConfig" durable="false" exactlyOnce="false">
          <security mode="None" />
        </binding>
        <binding serializationFormat="Xml" name="DotNetConfig" durable="false" exactlyOnce="false">
          <security mode="None" />
        </binding>
      </msmqIntegrationBinding>
    

    这允许您使用各种格式化程序,为您的队列客户端提供最大范围的互操作性。

    完整的值列表在这里: http://msdn.microsoft.com/en-us/library/system.servicemodel.msmqintegration.msmqmessageserializationformat.aspx

    【讨论】:

    • 谢谢@hugh。那么它是否仍然需要通过客户端使用 MsmqIntegrationBinding 进行序列化?或者客户端可以简单地将 xml 有效负载加入队列,并且主机/服务可以使用 serializationFormat="Xml" 出列?
    • 是的,客户端可以将 xml 负载入队,服务可以使用 Xml 序列化格式出队
    猜你喜欢
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    • 2010-12-30
    • 2013-05-05
    • 1970-01-01
    • 2012-04-09
    • 2011-08-11
    • 2012-07-22
    相关资源
    最近更新 更多