2012-03-09 29 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

相關問題