[英]Using WCF To send directly to MSMQ queues
我有一個Windows服務,可以接收來自各種MSMQ的消息。 該服務從隊列中提取消息,然后根據消息來自的隊列執行特定的工作流。 是否可以配置WCF服務以接受來自端點的消息並將其放入隊列中? 我希望該服務具有多個終結點,並且根據接收消息的終結點,該消息將被放置在另一個隊列中。 我已經看過有關netMsmqBinding的內容,但到目前為止,我還無法確定這是否適合我正在考慮的用途。
感謝您的幫助,
麥克風
我正確地得到了嗎-你想擁有
您絕對可以擁有WCF服務,該服務會將任何數量的終結點暴露給外部,並且會將進入的消息丟棄到MSMQ隊列中。 我只是不確定您是否能夠在WCF服務方法中知道請求傳入的端點.....通常,WCF服務類對請求的來源一無所知(並且通常不需要知道...)。
我看到一些解決方法:
有多種服務,每個(類型)端點一個; 他們可以共享所有代碼和所有內容,但是如果將其分成單獨的服務類,則每個服務類將固有地知道其服務的端點,從而可以知道將信息放入哪個MSMQ隊列。
找到一種與消息一起發送標頭信息的方法,該消息以某種方式告訴您將消息放置在何處
在WCF 4.0中,您也許可以使用新的WCF路由服務來做某事。...但是不確定如何工作-因為它還需要某種“提示”才能知道它在哪個端點上被調用以及如何路由傳入的消息
我能夠做到這一點的方法是創建一個自定義ServiceHost類,該類可以將配置名稱傳遞給它。 這是使用服務實現類型名稱查找配置的默認實現的替代方法。 這使我可以在同一台計算機上運行同一實現的多個實例。 除此之外,我還在自定義服務類中添加了一個自定義MessageInspector,它將自己附加到每個端點以偵聽消息。 然后,我使用IDispatchMessageInspector.AfterReceiveRequest()方法接收傳入的消息,然后將其放入我在配置中定義的隊列中。 有點復雜,但它完全適合我們的情況。
net.msmq綁定使WCF客戶端可以直接寫入MSMQ隊列,即使讀取隊列的WCF服務不處於活動狀態甚至也不必存在。 net.msmq綁定還允許從隊列中自動讀取。 不使用MessageQueue寫入隊列或從隊列讀取。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.