spring集成多rabbitmq服务端

本文详细介绍了如何在Spring项目中集成多个RabbitMQ服务端,包括目录结构、相关类与接口的解析,以及创建endpoint、监听器和发送器的步骤。在使用过程中,需要配置endpoint、监听器和发送器,实现消息处理和发送,并在启动时启动所有监听器。
摘要由CSDN通过智能技术生成

使用说明

1. 目录结构

──mq
    │  
    ├─config
    │  │  ApplicationStartup.java
    │  │  MqConst.java
    │  │  
    │  └─endpoints
    │          CsfMqEndpoint.java
    │          ForwardMqEndpoint.java
    │          MqEndpoint.java
    │          
    ├─listeners
    │      BssMqListener.java
    │      CsfConsumerA.java
    │      CsfConsumerB.java
    │      CsfMqListener.java
    │      MqListener.java
    │      
    └─senders
            BaseMqSender.java
            BssMqSender.java
            MqSender.java
            ProductMqSender.java
        

2. 相关类与接口

  1. MqEndpoint:endpoint基类。每一个MQ server对应一个endpoint。
  2. MqListener:监听器(消费者)接口,定义监听方式。
  3. Consumer:消息处理器接口,定义消息的处理方式。
  4. MqSender:发送器(生产者)接口,定义消息的发送方式。
  5. BaseMqSender:MqSender的一个实现类,封装了一些公共的常用方法。
  6. ApplicationStartup:项目启动时启动所有监听器。
  7. MqConst:定义常量。

3. 使用过程

3.1. 创建一个新的 endpoint

  1. 在配置文件的rabbitmq.server下添加配置,包括host,port,username,password,virtualHost
  2. 继承MqEndpoint基类,添加@Component注解
  3. 读取配置文件
  4. 调用基类的setConnectionFactory方法
  5. 使用时通过@Autowired自动注入

3.2. 创建一个新的监听器

  1. 在配置文件的rabbitmq.listen下添加配置,包括queue,exchange,routing-key
  2. 编写消息处理器
    1. 继承DefaultConsumer类或实现Consumer接口
    2. 覆盖handleDelivery方法
  3. 实现MqListener接口,添加@Component注解
  4. 实现listen方法

特别的,对于Csf的监听器:
1.在配置文件的rabbitmq.listen.csf下添加配置,包括queue,exchange,routing-key,consumer,其中,consumer为该监听的消息处理器类的类名,规定该处理类必需处于MqConst指定的包名下。

3.3. 创建一个新的发送器

  1. 继承BssMqSender类,添加@Component注解
  2. 实现自己的发送方法,调用父类的send进行发送
  3. 使用时通过@Autowired自动注入

4. 配置文件结构

rabbitmq:
  # MQ server
  server:
    forward:
      host: 192.168.56.101
      port: 5672
      username: admin
      password: admin
      virtual-host: /
    csf:
      host: 192.168.56.102
      port: 5672
      username: admin
      password: admin
      virtual-host: /
  # 监听端
  listen:
    bss:
      queue: bss
      exchange: bss
      routing-key: bss
    csf:
      funcA:
        queue: csfA
        exchange: csfA
        routing-key: csfA
        consumer: CsfConsumerA
      funcB:
        queue: csfB
        exchange: csfB
        routing-key: csfB
        consumer: CsfConsumerB
  # 发送端
  send:
    bss:
      exchange: bss
      routing-key: bss
    # 各产品
    product:
      cke:
        exchange: cke
        routing-key: cke

项目地址:https://github.com/andyzzl/rabbitmq-test

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值