2012-03-09 104 views
1

激活的WF服务MSMQ消息的客户端的优先级我有一个WCF激活工作流服务(XAMLX)设置如何(使用WorkflowServiceHost中托管)。我设置发送到通过MQ

这WCF WebService的有一个“NetMsMqBinding”绑定和基于net.msmq端点所使用的客户端调度操作。

在客户端,我使用Visual Studio生成代理存根以与此WCF服务进行通信。一切工作正常,我可以看到消息出现在服务器上的(日志记录)MQ中,WCF从队列中拾取消息以根据消息激活配置的工作流。

我需要控制发送到MQ的消息的优先级,以便某些WCF客户端可以优先处理其工作流。

看来NetMsMqBinding并不真正支持MQ消息优先级。它是否正确?如果是这样,我该如何实现/模拟这个?我可以使用MQ触发器根据某些标志更改消息的优先级吗?

回答

2

发布我的解决方案,万一有人需要算出这个

NetMSMQBinding不支持,所以我用错了绑定从客户端设置消息的优先级。更强大的MsMqIntegrationBinding是正确的选择。

客户端: 从客户端,需要简单地创建一个System.Messaging.Message对象,设置优先级并将其放入指向目标MQ的MessageQueue.MessageQueue对象中。

服务器端: 的WorkflowService托管WCF项目需要在web.config以下endpointBinding:


<endpoint address="msmq.formatname:DIRECT=OS:.\private$\MyWebService/MyProcessingService.xamlx" binding="msmqIntegrationBinding" bindingConfiguration="MyMsMqIntegrationBinding" contract="IMyProcessingService" name="MqIntegrationBindingEndPoint" />

(地址是假设MQ服务是本地WCF托管)

<bindings> <!--We use msmqIntegrationBinding instead of netMsmqBinding since we want to control priority of MQ messages being dropped in the queue and that is not supported in netMsmq --> <msmqIntegrationBinding> <binding name="MyMsMqIntegrationBinding" exactlyOnce="false"> <security mode="None" /> </binding> </msmqIntegrationBinding>


从MQ并处理它是通过丢弃在XAMLX“接收”活动,并选择Message的内容定义消息类型为System.ServiceModel.MsmqIntegrationMessage<YourTypeGoesHere>现在,你必须从你的ActivityContext访问此MsmqMessage<yourType>收到MsmqMessage的方式,你可以检索该消息中发送的值。

这是构建一个可扩展的一个非常有用和强大的方式,节流优先控制MQ + WCF +基于WF Web服务

+0

中不太支持使用它。没有** System.ServiceModel.MsmqIntegrationMessage **这样的事情。你的意思是** System.ServiceModel.MsmqIntegration.MsmqMessage **? – MickyD 2014-04-17 04:19:49

1

这些交易消息是?如果是这样,你根本不能改变优先级。

消息是不可变的,所以你不能更改已发送非事务性消息的优先级。

干杯
约翰Breakwell

+0

这些都不是事务性消息。我希望在消息发送到接收队列之前,从客户端理想地设置消息的优先级。 – bhavinb 2012-03-12 12:04:32

+0

您只能在发送应用程序的代码中设置消息的优先级。不幸的是,我不是一个WCF用户,所以不确定它会在哪里设置。 – 2012-03-12 23:25:41

+0

是的,这就是我想要设置的位置,但netMsmqBinding透明地将WCF Soap消息转换为MSMQ消息,反之亦然,并且不会给我回叫来控制消息属性。另外,我正在查看传统的MSMQIntegrationBinding,但在新的工作流服务范例AFAIK – bhavinb 2012-03-13 09:32:20

相关问题