消息队列是一种在消息的传输过程中保存消息的容器,具备先进先出的特点,一般用于异步、解耦、流量削锋等问题,实现高性能、高可用、高扩展的架构。
消息队列的好处或功能包括:1、可以在断开连接的环境下发送消息;2、使用快捷模式,消息可以非常快地发送;3、对于可恢复的机制,消息可以使用有保证的交付方式发送;4、用访问控制列表来保护消息队列,可以确定哪些用户可以发送或接收队列中的消息;5、Message Queuing 3.0支持多播消息的发送;6、Message queuing 4.0支持病毒消息;7、Message Queuing 5.0支持更安全学身份验证算法。
消息队列有几种类型的消息:1、一般消息——由应用程序发送;2、确认消息——报告一般消息的状态;3、响应消息——当原始发送者需要某种特殊应答时,由接收应用程序发送响应消息;4、报告消息——由消息队列系统生成。
常见的公共队列或私有队列通常用于发送普通数据和系统通知等信息。此外还有其他类型的队列,如定时器队列、事务控制队列等。
存储在磁盘上的消息位于C:\\Windows\\System32\\msmq\\storage目录。
公共队列发布在Active Directory中,通过Active Directory域复制,提供浏览和搜索功能。这些队列即使不知道放置它们的计算机名也可访问。可以将公共队列从一个系统移动到另一个系统上,而无需通知客户。然而,它不能在Workgroup环境下创建,因为需要Active Directory。
私有队列不在Active Directory中发布,仅当知道完整路径名时才能访问它们。可以在Workgroup环境下使用私有队列。这正是我在Demo中使用的类型。
日志队列用于保存消息副本,在发送或接收消息后启动相应的公共或私有队列的日志功能。在日志队列中,可以有两种不同的队列类型:源日志队列和目标日志队列。可以通过消息属性打开源日志功能并将日志消息储存于源系统,或者通过队列属性打开目标日志功能并使消息存储在目标系统的日志队列中。
如果消息未能在指定超时时间内到达目标系统,该消息则会被存储在死信队列中。在同步编程中,错误可以被立即检测出来,但处理错误的策略必须与使用消`息队列的方式不同。死信队列可以用于检查未到达目的地的消息。
管理队列包含发送者发送消息后的确认消息。发送者可指定一个管理队列,从中接收关于消息是否成功发送的通知。
响应队列适用于多条简单的确认消息作为接收端的应答。接收应用程序可以将响应消息发送回原始发送者。
报告队列用于测试消息。将公共或私有队列的类型更改为预定义的ID{5EE8F33-CCE9-11CF-B108-OuOAFD61cE9}即可创建报告队列。它可用作跟踪其路由中消息的测试工具。
最后,系统队列是私有的且由消息队列系统使用,旨在管理消息、存储通知消息并确保事务消息的正确顺序。