Java

Bus-RabbitMQ 模块 — 开发者手册

Euonia 消息总线的 RabbitMQ 传输适配器。基于 bus-abstract 的抽象契约,提供通过 RabbitMQ AMQP 代理的消息传递实现,支持单播队列、多播 topic 交换和请求-响应 RPC 模式。
  • Maven 坐标: com.euonia:bus-rabbitmq
  • 依赖: com.euonia:core, com.euonia:pipeline, com.euonia:bus-abstract, com.euonia:bus-core
  • API文档点击查看

架构

                    RabbitMqTransport
                  (实现 Transport 接口)
                            │
          ┌─────────────────┼─────────────────┐
          │                 │                 │
          ▼                 ▼                 ▼
  publishAsync        sendAsync         callAsync
  (fanout 交换器)     (直接队列)         (RPC 请求-响应)
          │                 │                 │
          ▼                 ▼                 ▼
  RabbitMqTopic       RabbitMqQueue      RabbitMqRequest
  Subscriber          Consumer           Executor
  (多播订阅者)         (单播消费者)        (RPC 执行器)
          │                 │                 │
          └─────────────────┼─────────────────┘
                            │
                            ▼
                  RabbitMqRecipient
              (抽象基类:事件监听/DLX)
                            │
                            ▼
              RabbitMqRecipientRegistrar
              (HandlerRegistration → Consumer/Subscriber/Executor)

核心概念

RabbitMqTransport — AMQP 传输实现

实现 Transport 接口,带有 Failsafe 重试:

方法 交换器模式 说明
publishAsync fanout 多播到所有订阅者
sendAsync direct queue 单播到指定队列
callAsync RPC 请求-响应,使用 replyTo/correlationId

RabbitMqRecipientRegistrar — 注册映射

HandlerRegistration 列表自动映射为 AMQP 组件:

消息类型 组件 模式
Unicast RabbitMqQueueConsumer 独占队列消费
Multicast RabbitMqTopicSubscriber 自动 ACK fanout
Request RabbitMqRequestExecutor RPC DeliverCallback

RabbitMqBusOptions — 配置选项

字段 说明
host / port RabbitMQ 连接地址
username / password 认证凭据
exchangePrefix / queuePrefix 交换器/队列命名前缀
retryPolicy Failsafe 重试策略
useDlx 是否启用死信交换器

快速入门

// 配置
var options = new RabbitMqBusOptions();
options.setHost("localhost");
options.setPort(5672);
options.setUsername("guest");
options.setPassword("guest");

// 创建传输
var transport = new RabbitMqTransport(options, handlerContext);

// 注册处理器
var registrar = new RabbitMqRecipientRegistrar(options, handlerContext);
registrar.register(handlerRegistrations);

// 发送消息
transport.sendAsync(routedMessage)
    .toCompletableFuture()
    .join();

Maven

<dependency>
    <groupId>com.euonia</groupId>
    <artifactId>bus-rabbitmq</artifactId>
    <version>${euonia.version}</version>
</dependency>

作者

damon (zhaorong@outlook.com)