2014-12-31 33 views
1

我已經創建了NServiceBus分銷商和工人,運行在不同的機器上。當我運行worker時,它成功向分發服務器發送消息(我可以看到它通過存儲隊列處理),但由於某種原因,在分發服務器上創建了一個名爲

'DIRECT = TCP:xx的輸出隊列。 xx.xx.xx \ PRIVATE $ \ order_queue $應該調用隊列 'DIRECT = OS:WORKERDNSNAME \ private $ \ myqueue'。

有誰知道爲什麼order_queue $正在創建?

回答

2

無恥的複製直接從舊的文章在pg2e.blogspot.co.uk

事務性隊列通過HTTP從專用網絡

當通過HTTP/S從 服務器將消息發送到事務性隊列沒有公共IP地址的ACK消息可能有一個難以達到目的地的時間戳 。這是由於與 this(基本上導致與消息目的地地址不匹配的NATting)相同的原因。

默認情況下,收據發送到發送計算機的名稱,除非雙方位於相同的 網絡上,否則 當然不起作用。要解決此問題,您必須將收據映射到發件人的公開地址 。這是通過在以下內容中創建一個xml文件(任意名稱)在 C:\ WINDOWS \ system32 \ msmq \ mapping中完成的。

<StreamReceiptSetup xmlns="msmq-streamreceipt-mapping.xml"> 
    <setup> 
     <LogicalAddress>http://msmq.domain.com/*</LogicalAddress> 
     <StreamReceiptURL>http://[ADDRESS_TO_SENDER]/msmq/Private$/order_queue$</StreamReceiptURL> 
    </setup> 
    <default>http://xxx.xx.xxx.xx/msmq/Private$/order_queue$</default> 
</StreamReceiptSetup> 

說明:在msmq.domain.com發送到任何隊列中的所有郵件將 有自己的收據發送到給定StreamReceiptURL。 order_queue $ queue用於處理事務控制消息。

我懷疑更高版本的MSMQ或NServiceBus句柄自動創建此隊列,而無需您自己創建XML文件。

相關問題