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/

转载请注明:博客园

目录
相关文章
|
消息中间件 存储 Kafka
MQ 消息队列核心原理,12 条最全面总结!
本文总结了消息队列的12个核心原理,涵盖消息顺序性、ACK机制、持久化及高可用性等内容。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
|
消息中间件
手撸MQ消息队列——循环数组
队列是一种常用的数据结构,类似于栈,但采用先进先出(FIFO)的原则。生活中常见的排队场景就是队列的应用实例。在数据结构中,队列通常用数组实现,包括入队(队尾插入元素)和出队(队头移除元素)两种基本操作。本文介绍了如何用数组实现队列,包括定义数组长度、维护队头和队尾下标(front 和 tail),并通过取模运算解决下标越界问题。此外,还讨论了队列的空与满状态判断,以及并发和等待机制的实现。通过示例代码展示了队列的基本操作及优化方法,确保多线程环境下的正确性和高效性。
497 0
手撸MQ消息队列——循环数组
|
消息中间件 Java Kafka
MQ 消息队列 比较
MQ 消息队列 比较
211 0
|
消息中间件 存储 缓存
一个用过消息队列的人,竟不知为何要用 MQ?
一个用过消息队列的人,竟不知为何要用 MQ?
649 1
|
消息中间件 C语言 RocketMQ
消息队列 MQ操作报错合集之出现"Connection reset by peer"的错误,该如何处理
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
消息中间件 Java 物联网
消息队列 MQ操作报错合集之建立连接时发生了超时错误,该如何解决
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
消息队列 MQ操作报错合集之建立连接时发生了超时错误,该如何解决
|
消息中间件 JavaScript Linux
消息队列 MQ操作报错合集之客户端在启动时遇到了连接错误,是什么原因
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
消息中间件 Java C语言
消息队列 MQ使用问题之在使用C++客户端和GBase的ESQL进行编译时出现core dump,该怎么办
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
消息中间件 Java 开发工具
消息队列 MQ使用问题之如何使用DefaultMQPushConsumer来消费消息
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
消息中间件 运维 Go
消息队列 MQ使用问题之如何配置生产环境
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。