目录


mac-message 消息组件

基本概念

  mac-message使用基于长连接的“推消息”方式实现,具备很高的实时消息处理能力。

消息中间件(Message Broker)

图片未加载

消息监控(Message Monitor)

图片未加载

消息发送与接收流程

图片未加载

输入输出适配器

  输入适配器通常用于扩展消息服务器的接入与接出协议,比如:编写一个Java socket服务,将收到的报文转换成消息放入消息队列。
  输出适配器同理,用于将需要发送的消息以不同的渠道和协议向外发送。
  输入适配器并没有接口要求,它通过引用localMsgSvc1来实现消息入队。输出适配器则需要实现MessageService接口,并作为收件人被消息中间件在本地直接引用。
  由于输入输出适配器与消息broker同在一个JVM中,其效率就比通过网关方式进行协议转换和通讯要高很多。

目标队列(Target Queue)

  消息中间件在收到消息后,先检查此队列是否有配置持久化,有则先将消息持久化,再尝试将消息写入内存队列。
  如果内存队列已满则放弃入队,消息仍然保留在持久化存储中不会丢失,后续再根据恢复策略将消息读出,再次尝试写入内存队列。
  整个过程对于客户端来说是同步调用,中间发生异常将抛出异常到客户端

收件人队列(Recipient Queue)

  收件人队列是运行期动态创建的,在一个消息Broker实例上,一个收件人对应一个收件人队列,与该收件人的实例数无关。
  向收件人发送消息成功或失败将产生事件,更新到消息对象的recipients属性上,如果有配置持久化,也会同时进行持久化。
  如果该收件人被要求必达,但发送失败,则整个消息发送失败,中间件会进行重发等补偿措施。

消息转换器(Message Converter)

  消息转换器用于将基于不同协议的消息对象进行互相转换。

过滤与分拣插件(Recipient Finder)

  过滤与分拣插件用于动态确定消息的收件人。如果希望过滤此消息(忽略)此消息只需返回空即可。

收件人消息签收

  消息签收分为三种情况:
  1. 收件人在收到消息时,返回签收消息给中间件。
  2. 消息中间件在成功将消息发往收件人时返回签收消息给发件人。
  3. 收件人在收到消息时,返回签收消息给发件人。
  注:在完全使用ActiveMQ方式时,与ActiveMQ的用法无异。而在使用RPC方式时,由于RPC默认是同步方法调用,因此不需要额外的签收处理。因此,只有当混合使用两种方式时需要额外的配置。