簡體   English   中英

使用WCF直接發送到MSMQ隊列

[英]Using WCF To send directly to MSMQ queues

我有一個Windows服務,可以接收來自各種MSMQ的消息。 該服務從隊列中提取消息,然后根據消息來自的隊列執行特定的工作流。 是否可以配置WCF服務以接受來自端點的消息並將其放入隊列中? 我希望該服務具有多個終結點,並且根據接收消息的終結點,該消息將被放置在另一個隊列中。 我已經看過有關netMsmqBinding的內容,但到目前為止,我還無法確定這是否適合我正在考慮的用途。

感謝您的幫助,

麥克風

我正確地得到了嗎-你想擁有

  • 使用多個端點向外界公開的WCF服務
  • 根據消息進入WCF服務的端點,應將這些消息放入單獨的MSMQ隊列中?

您絕對可以擁有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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM