1.Queue Contract: [OperationContract(IsOneWay = true )]
2.Configuration of DisableSecurity(同时设置MEX):
<endpoint
address="net.msmq://localhost/private/ClassA_SendMail"
binding="netMsmqBinding "
contract="EmailService.ISendMail"
bindingConfiguration="SendMailNetMsmqBinding" />
<endpoint
address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/SendMail/" />
</baseAddresses>
</host>
<bindings>
<netMsmqBinding>
<binding name="SendMailNetMsmqBinding">
<security mode="None" />
</binding>
</netMsmqBinding>
</bindings>
3.使用Queue之前要Verify是否存在
ServiceHost host = new ServiceHost(typeof(MyService)); if(MessageQueue.Exists(@"./private$/MyServiceQueue") == false)
{
MessageQueue.Create(@"./private$/MyServiceQueue",true );
}
4.MSMQ支持Transaction,包括三种:
1)客户端的Transaction:Client->Client Queue
2)Delivery Queue:客户端的Queue Delivery 到服务端的Queue
3)服务端的Transaction:Service 从Service Queue接收数据
5,避免Sessionful queued service