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/

转载请注明:博客园

目录
相关文章
|
4天前
|
消息中间件 存储 监控
消息队列通信的优缺点
【10月更文挑战第29天】消息队列通信具有诸多优点,如解耦性强、异步通信、缓冲削峰等,能够有效地提高系统的灵活性、可扩展性和稳定性。但同时也存在一些缺点,如系统复杂性增加、性能开销、数据一致性挑战和实时性受限等。在实际应用中,需要根据具体的业务需求和场景,权衡其优缺点,合理地选择和使用消息队列通信机制,以实现系统的高效运行和优化。
|
4天前
|
消息中间件 存储 供应链
进程间通信方式-----消息队列通信
【10月更文挑战第29天】消息队列通信是一种强大而灵活的进程间通信机制,它通过异步通信、解耦和缓冲等特性,为分布式系统和多进程应用提供了高效的通信方式。在实际应用中,需要根据具体的需求和场景,合理地选择和使用消息队列,以充分发挥其优势,同时注意其可能带来的复杂性和性能开销等问题。
|
5月前
|
消息中间件
|
5月前
|
消息中间件 存储 中间件
中间件消息队列协议异步通信
【6月更文挑战第5天】
44 2
|
4月前
|
消息中间件 监控 Java
在Java应用中实现微服务间的消息队列通信
在Java应用中实现微服务间的消息队列通信
|
6月前
|
消息中间件 存储 物联网
AMQP(Advanced Message Queuing Protocol)是一种标准化的消息队列协议,用于异步通信和消息传递
AMQP是开放标准的消息队列协议,确保异步通信中的消息路由、可靠性和灵活性。它支持持久化、确认机制,防止消息丢失,允许灵活路由与定制,适用于多领域,如企业应用、云计算和物联网。
137 0
|
6月前
|
消息中间件 缓存 API
|
消息中间件 微服务
微服务通信:RPC、消息队列和事件驱动架构的比较
在微服务架构中,微服务之间的通信是至关重要的。为了实现松耦合、高效可靠的通信,开发人员可以选择不同的通信方式,包括RPC(远程过程调用)、消息队列和事件驱动架构。本文将对这三种常见的微服务通信方式进行比较,探讨它们的特点、适用场景和优缺点,帮助开发人员选择合适的通信方式。
332 0
|
消息中间件 传感器 网络协议
物联网通信消息队列客户端-MQTT简介
物联网通信消息队列客户端-MQTT简介
570 0
物联网通信消息队列客户端-MQTT简介
|
消息中间件 Linux PHP
php进程通信-消息队列(2)
php进程通信-消息队列
106 0
php进程通信-消息队列(2)