我想测试在可能连接或未连接的远程客户端上排队消息的可能性,这些客户端在连接时会将通过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消息。发送到非事务性队列不会。 –