消息端点设计相关模式
消息端点使用:
应用程序如何连接到消息传递通道以发送和接收消息?
使用消息端点将应用程序连接到消息传递通道,消息端点是消息传递系统的客户端,应用程序可以使用该客户端发送或接收消息。
竞争消费者
消息传递客户端如何同时处理多个消息?
在单个渠道上创建多个竞争消费者,以便消费者可以同时处理多个消息。
使用MQ的点对点模式可以设置多个竞争消费者
消息网关
应用系统如何访问消息系统
使用消息网关,封装特定的方法调用并且暴露特定域的方法给应用系统。
消息调度程序
单个渠道上的多个消费者如何协调他们的消息处理?
在通道上创建消息调度程序,该消息调度程序将使用来自通道的消息并将它们分发给执行者。
消息映射器
如何在域对象和消息传递基础结构之间移动数据,同时保持两者相互独立?
创建一个单独的Messaging Mapper,其中包含消息传递基础结构和域对象之间的映射逻辑。对象和基础设施都不知道Messaging Mapper的存在。
选择性消费者
消息使用者如何选择希望接收哪些消息?
使消费者成为选择性消费者,消费者通过其渠道传递的消息,以便它只接收符合其标准的消费者。
消息事务化客户端
客户端如何在与消息系统的交互中保障消息事务(即业务事务提交和消息被业务系统消费失败后,仍可回滚消息的发送和消费状态为未发送和未消费)
使用事务客户端 - 使用消息传递系统事务处理客户端的会话,以便客户端可以指定事务边界。
发送方和接收方都可以是交易方式。对于发件人,在发送人提交事务之前,消息不会“真正”添加到频道。使用接收器,在接收器提交事务之前,消息不会“真正”从通道中删除。使用显式事务的发送方可以与使用隐式事务的接收方一起使用,反之亦然。单个通道可能具有隐式和显式事务发送器的组合; 它也可能有接收器的组合。
持久化订阅者
如果用户没有收听消息,他们如何避免丢失消息?
使用Durable Subscriber使邮件系统保存在订户断开连接时发布的邮件。
将未消费的订阅消息保存,待订阅者恢复重新发出。
轮询消费者
怎样实现应用想要按一定的速度消费消息
使用轮询消费者可以实现按消费应用来决定消息被消费的速率。
Idempotent Receiver(幂等接收者)
消息接收者如何处理重复的消息?
将接收器设计为Idempotent接收器 - 可以安全地多次接收相同的消息。
Event-Driven Consumer(事件驱动消费者)
应用程序如何在消息可用时自动使用消息?
应用程序应使用事件驱动的消费者,在消息传递时自动传递消息。
Service Activator(服务调用器)
应用程序如何设计通过各种消息传递技术和非消息传递技术调用服务?
设计Service Activator,将通道上的消息连接到正在访问的服务。