我想測試在可能連接或未連接的遠程客戶端上排隊消息的可能性,這些客戶端在連接時會將通過Internet發送到msmq的消息即託管在IIS 6中。在IIS 6中託管MSMQ並通過WCF發送郵件
現在,我在託管IIS的win server2003上設置MSMQ。在我完成這個「MSMQ」後,在IIS默認網站上顯示出來。
好吧,然後我通過計算機管理 - >消息隊列添加了一個新的事務專用隊列。
從那裏我想要做的就是看到消息堆積起來,我會在這些作品後處理這些消息。
現在,我做了有下面的代碼客戶端應用程序:
using (var contract = new HttpMsmqBridgeProxy())
{
var valueToSend = 2456;
contract.TestFunction(valueToSend);
Console.WriteLine("value sent: " + valueToSend + "\r\n");
}
下面是這個客戶端的的app.config:
<configuration>
<system.serviceModel>
<client>
<endpoint
address="net.msmq://**.**.***.228/private/MarksTestHttpQueue"
binding="netMsmqBinding"
bindingConfiguration="srmpBinding"
contract="HttpMsmqBridgeLibrary.IHttpMsmqBridgeContract">
</endpoint>
</client>
<bindings>
<netMsmqBinding>
<binding name="srmpBinding"
queueTransferProtocol="Srmp">
<security mode="None"/>
</binding>
</netMsmqBinding>
</bindings>
</system.serviceModel>
</configuration>
的IP是我的面向公衆的IP的作品,我可以託管一個wcf服務或網頁就好了。我遵循這個指南有點使用srmpBinding。
http://msdn.microsoft.com/en-us/library/aa395217.aspx
因此,總之什麼,當我運行的應用程序是它成功發生了,告訴我有人送,我去到消息隊列我的客戶,看到一個新的隊列中傳出文件夾中露面稱爲:
直接:http:// 。。 * .228/msmq/private $/MarksTestHttpQueue
在此隊列中沒有等待發送的消息,因此我假設消息已發送。
當我在winserver2003上查看我的msmq時,沒有到達排隊等待的消息。
ETA:
var queue = new MessageQueue("FormatName:DIRECT=http://**.**.***.228/msmq/private$/nonTransQueue");
System.Messaging.Message Msg;
Msg = new System.Messaging.Message();
Msg.Formatter = new ActiveXMessageFormatter();
Msg.Body = "Testing";
queue.Send(Msg);
的消息顯示(改變在system32/MSMQ /映射目錄映射文件後)就好了:我可以用經典的MessageQueue implimintation將消息發送到非事務性隊列。我想知道是否因爲它是IIS6我將無法使用net.msmq綁定發送。
如果您通過HTTP發送到事務性隊列,發件人需要MSMQ並在本地安裝HTTP支持來接收目標發回的ACK消息。發送到非事務性隊列不會。 –