今天来讲MSMQ在实战项目中的应用。众所周知,放了防止订单丢失,我们都是采用Order过一下MSMQ。MSMQ的优点个人认为是:先天的异步消息发送和天生的自动负载均衡。
第一步: 准备工作,安装MSMQ服务器,然后勾上下图选项,安装即可。
第二步:新建一个类库。建立两个文件IOrder.cs,Order.cs。截图如下。
第三步:新建Host的Console程序,建立App.config文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<!--设置私有的对列名-->
<add key="queueName" value=".\private$\order"/>
</appSettings>
<system.serviceModel>
<services>
<service name="WCFMSMQSample.Order">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8733/Design_Time_Addresses/WCFMSMQSample"/>
</baseAddresses>
</host>
<endpoint address="net.msmq://localhost/private/order"
binding="netMsmqBinding"
contract="WCFMSMQSample.IOrder"
bindingConfiguration="Nosecurity" >
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
</service>
</services>
<bindings>
<netMsmqBinding>
<binding name="Nosecurity">
<security mode="None"></security>
</binding>
</netMsmqBinding>
</bindings>
</system.serviceModel>
</configuration>
第四步:在console程序中:①:创建队列。②: 开启服务。
最后一步:新建一个Console程序作为客户端来对MSMQ进行测试,这次我们通过“信道”的方式生成实例。
①: 让Host服务Off Line,我们插入100条Order,看msmq有什么反应。
对的,消息数量也就是我Client插入的100条订单信息,但是只是在队列中,还没写入文件中,因为还没执行消息队列。
②: 这次,我重启一下Host,让Service端 On Line。看看MSMQ又有什么反应。
是的,当MSMQ发现我的WCf已经开启,执行消息队列中的操作i,消息也就全部进去我的”1.txt“文件。