第 17 章 消息系统
17.1. 简介 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
17.1.1. HornetQ 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
HornetQ 是红帽开发的多协议的异步消息系统。HornetQ 提供带有自动客户失效切换的高可用性(HA),保证了在服务器发生故障时消息的可靠性。HornetQ 也支持灵活的群集方案以平衡消息负载。
17.1.2. 关于 Java 消息服务(Java Messaging Service,JMS) 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
消息系统允许您将多种系统用更好的可靠性松散地耦合在一起。Java Messaging Service (JMS) 供应商使用事务系统来提交或回滚原子的修改。不像基于 Remote Procedure Call (RPC) 模式的系统,消息系统主要使用异步的消息传递模式,在请求和响应间没有紧密的关系。多数消息系统也支持请求-响应模式,但这不是消息系统的主要功能。
消息系统将消息的发送者和消费者分离。发送者和消费者是完全独立的,彼此完全不知晓对方。这允许您创建灵活的、松耦合的系统。通常,大型的企业使用消息系统来实现消息总线,将多种系统松散地耦合在一起。消息总线通常组成 Enterprise Service Bus (ESB) 的核心。使用消息总线来分离不同的系统允许系统更容易成长和适应。它也提供了增加系统、减少旧系统更大的灵活性,因为它们之间的依赖性较低。
17.1.3. 支持的消息风格 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
HornetQ 支持下列消息风格:
- 消息队列模式
- 消息队列模式涉及发送消息到队列里。消息位于队列后,它通常会被持久化以保证递送。一旦消息已经在队列里移动,消息系统会将其递送到某个消息消费者。进行处理后,消息消费者会确认递送。当和点对点消息系统一起使用时,消息队列模式允许一个队列对应多个消费者,但每个消息只能被单个消费者接收。
- 发布-订阅模式
- 发布-订阅(Publish-Subscribe)模式允许多个发送者发送消息到服务器上的单个实体。这个实体通常被称为“主题(Topic)”。每个主题都可被多个消费者使用,称为“订阅(subscription)”。每个订阅都接收发送到这个主题的每条消息的备份。这和消息队列模式不同,每条消息只能由单个消费者消费。持久性的订阅保持发送到主题的每个消息的备份,直至订阅者消费这些消息。在服务器重启时这些备份也会保留。非持久性的订阅则和创建它们的连接持续的时间一致。