WCF 消息队列通信

简介: MSMQ, microsoft Message Queue,微软消息队列。通过它,应用程序开发人员可以通过发送和接收消息,来与应用程序进行快速可靠的通信。   在WCF中,提供了MSMQ通信绑定:NetMsmqBinding和MsmqIntegrationBinding 这里做个简单的演示。

MSMQ microsoft Message Queue,微软消息队列。通过它,应用程序开发人员可以通过发送和接收消息,来与应用程序进行快速可靠的通信。

 

WCF中,提供了MSMQ通信绑定:NetMsmqBindingMsmqIntegrationBinding

这里做个简单的演示。(我的环境:windows2003 EE)

(1)安装消息队列服务

添加windows组件,在应用程序服务器中找到消息队列进行安装。

(2)启动消息队列服务

(3)在计算机管理中查看消息队列,在专用消息队列中添加专用队列,起名为msmqdemo

(4)开始创建WCF服务

很简单了,配置NetMsmqBinding绑定,设置绑定细节。exactlyOnce 设置为false,地址设置为:

net.msmq://localhost/private/MSMQDemo

专用队列的地址是/private$/名称,这里的地址是这个样子。然后发布元数据,地址我设置的为:

http://localhost:8731/MSMQWCF/PrintService/

 

因为它不支持双工通信(消息队列是单向的),所以,操作属性为单向。以添加客户为例,

数据契约:

public class Customer

{

public int Unid { get; set; }

public string CustomerName { get; set; }

public DateTime CreateTime { get; set; }

}

 

服务契约为:

[OperationContract(IsOneWay = true)]

void AddCustomer(Customer customer);

 

实现:

public void AddCustomer(Customer customer)

{

    Console.WriteLine("Customer order!");

Console.WriteLine(customer.Unid+""

+customer.CustomerName+" 订单时间:"

+customer.CreateTime.ToString());

}

 

(5)客户端

添加wcf引用。测试

[Test]

public void TestmqmqCustomer()

{

PrintInstance.PrintServiceClient client =

new UNTest.PrintInstance.PrintServiceClient();

 

 

PrintInstance.Customer _customer =

new UNTest.PrintInstance.Customer {

     Unid=1,

CustomerName="宋江",

CreateTime=Convert.ToDateTime("2010-2-2")

    };

    client.AddCustomer(_customer);

}

 

测试正常。

在服务不启动的状态下,单独执行客户端测试,会把信息写到消息队列中,这个可以在消息队列控制台看到。队列的读取与优先级有关。同优先级的,按先进先出处理。

 

博客园大道至简

http://www.cnblogs.com/jams742003/

转载请注明:博客园

目录
相关文章
|
XML 网络协议 IDE
WCF基础教程(三)——WCF通信过程及配置文件解析
WCF基础教程(三)——WCF通信过程及配置文件解析
365 0
WCF基础教程(三)——WCF通信过程及配置文件解析
|
JavaScript