SpringBoot配置多个RabbitMq

SpringBoot配置多个RabbitMqYMLrabbitmq first username app appkey password app appkey virtual host app appid addresses x x x x 5672 x x x x 5672second username guestpasswor guestvirtual host host 12

  • YML
 rabbitmq: first: username: ${app.appkey} password: ${app.appkey} virtual-host: ${app.appid} addresses: x.x.x.x:5672,x.x.x.x:5672 #集群 second: username: guest password: guest virtual-host: / host: 127.0.0.1 port: 5672
  • 配置源
import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.amqp.SimpleRabbitListenerContainerFactoryConfigurer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; / * RabbitMq多源配置 * * @author Lenovo */ @Configuration public class RabbitConfig { @Bean(name = "firstConnectionFactory") @Primary public ConnectionFactory firstConnectionFactory( @Value("${spring.rabbitmq.first.addresses}") String addresses, @Value("${spring.rabbitmq.first.username}") String username, @Value("${spring.rabbitmq.first.password}") String password, @Value("${spring.rabbitmq.first.virtual-host}") String virtualHost ) { CachingConnectionFactory connectionFactory = new CachingConnectionFactory(); connectionFactory.setAddresses(addresses); connectionFactory.setUsername(username); connectionFactory.setPassword(password); connectionFactory.setVirtualHost(virtualHost); return connectionFactory; } @Bean(name = "secondConnectionFactory") public ConnectionFactory secondConnectionFactory( @Value("${spring.rabbitmq.second.host}") String host, @Value("${spring.rabbitmq.second.port}") int port, @Value("${spring.rabbitmq.second.username}") String username, @Value("${spring.rabbitmq.second.password}") String password, @Value("${spring.rabbitmq.second.virtual-host}") String virtualHost ) { CachingConnectionFactory connectionFactory = new CachingConnectionFactory(); connectionFactory.setHost(host); connectionFactory.setPort(port); connectionFactory.setUsername(username); connectionFactory.setPassword(password); connectionFactory.setVirtualHost(virtualHost); return connectionFactory; } @Bean(name = "firstRabbitTemplate") @Primary public RabbitTemplate firstRabbitTemplate( @Qualifier("firstConnectionFactory") ConnectionFactory connectionFactory ) { RabbitTemplate firstRabbitTemplate = new RabbitTemplate(connectionFactory); return firstRabbitTemplate; } @Bean(name = "secondRabbitTemplate") public RabbitTemplate secondRabbitTemplate( @Qualifier("secondConnectionFactory") ConnectionFactory connectionFactory ) { RabbitTemplate secondRabbitTemplate = new RabbitTemplate(connectionFactory); return secondRabbitTemplate; } @Bean(name = "firstFactory") public SimpleRabbitListenerContainerFactory firstFactory( SimpleRabbitListenerContainerFactoryConfigurer configurer, @Qualifier("firstConnectionFactory") ConnectionFactory connectionFactory ) { SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory(); configurer.configure(factory, connectionFactory); return factory; } @Bean(name = "secondFactory") public SimpleRabbitListenerContainerFactory secondFactory( SimpleRabbitListenerContainerFactoryConfigurer configurer, @Qualifier("secondConnectionFactory") ConnectionFactory connectionFactory ) { SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory(); configurer.configure(factory, connectionFactory); return factory; } } 
  • 信道构建器
import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.io.IOException; / * 信道构建器 * * @author Lenovo */ @Configuration public class CreateQueue { @Bean public String chargeQueue(@Qualifier("secondConnectionFactory") ConnectionFactory connectionFactory) { try { connectionFactory.createConnection().createChannel(false).queueDeclare("test.add", true, false, false, null); }catch (IOException e){ e.printStackTrace(); } return "test.add"; } } 
  • 信道监听器
package com.ciih.authcenter.client.mq; import com.ciih.authcenter.manager.entity.Permission; import com.rabbitmq.client.Channel; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.core.Message; import org.springframework.amqp.rabbit.annotation.RabbitHandler; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component; import java.io.IOException; import java.util.List; / * 信道监听器 * * @author Lenovo */ @Slf4j @Component public class ListeningHandle { public static final String ENCODING = "UTF-8"; @RabbitHandler @RabbitListener(queues = {RabbitConfig.USERS_ADD}, containerFactory = "firstFactory") @SneakyThrows public void onMessageUserAdd(Message message, Channel channel) { log.info("[listenerManualAck 监听的消息userAdd] - [{}]", new String(message.getBody(), ENCODING)); try { channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); } catch ( IOException e) { } } @RabbitHandler @RabbitListener(queues = {RabbitConfig.USERS_UPDATE}, containerFactory = "firstFactory") @SneakyThrows public void onMessageUserUpdate(Message message, Channel channel) { log.info("[listenerManualAck 监听的消息userUpdate] - [{}]", new String(message.getBody(), ENCODING)); try { channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); } catch ( IOException e) { } } @RabbitHandler @RabbitListener(queues = {RabbitConfig.USERS_DELETE}, containerFactory = "firstFactory") @SneakyThrows public void onMessageUserDelete(Message message, Channel channel) { log.info("[listenerManualAck 监听的消息userDelete] - [{}]", new String(message.getBody(), ENCODING)); try { channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); } catch ( IOException e) { } } @RabbitHandler @RabbitListener(queues = {RabbitConfig.ORGS_ADD}, containerFactory = "firstFactory") @SneakyThrows public void onMessageOrgsAdd(Message message, Channel channel) { log.info("[listenerManualAck 监听的消息orgsAdd] - [{}]", new String(message.getBody(), ENCODING)); try { channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); } catch ( IOException e) { } } @RabbitHandler @RabbitListener(queues = {RabbitConfig.ORGS_UPDATE}, containerFactory = "firstFactory") @SneakyThrows public void onMessageOrgsUpdate(Message message, Channel channel) { log.info("[listenerManualAck 监听的消息orgsUpdate] - [{}]", new String(message.getBody(), ENCODING)); try { channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); } catch ( IOException e) { } } @RabbitHandler @RabbitListener(queues = {RabbitConfig.ORGS_DELETE}, containerFactory = "firstFactory") @SneakyThrows public void onMessageOrgsDelete(Message message, Channel channel) { log.info("[listenerManualAck 监听的消息orgsDelete] - [{}]", new String(message.getBody(), ENCODING)); try { channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); } catch ( IOException e) { } } @RabbitListener(queues = {"test.add"}, containerFactory = "secondFactory") @SneakyThrows public void hospitalAdd(List 
  
    permissions, Message message, Channel channel) { System.out.println(permissions); } } 
  
  • 发送消息
import com.ciih.authcenter.manager.entity.Permission; import com.ciih.authcenter.manager.service.PermissionService; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.List; @RestController public class Sender { @Resource PermissionService permissionService; @Resource(name = "secondRabbitTemplate") private RabbitTemplate secondRabbitTemplate; @GetMapping("test1") public void send1() { List 
  
    list = permissionService.lambdaQuery().last("limit 0, 10").list(); this.secondRabbitTemplate.convertAndSend("test.add", list); } } 
  
  • 依赖
     
         
         
           org.springframework.boot 
          
         
           spring-boot-starter-amqp 
          
        
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/206374.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午3:51
下一篇 2026年3月19日 下午3:51


相关推荐

  • 工作流引擎 Activiti 万字详细进阶

    工作流引擎 Activiti 万字详细进阶Activiti 进阶一 流程实例什么是流程实例流程实例 ProcessInsta 代表流程定义的执行实例 一个流程实例包括了所有的运行节点 我们可以利用这个对象来了解当前流程实例的进度等信息 例如 用户或程序按照流程定义内容发起一个流程 这就是一个流程实例 流程定义和流程实例的图解 启动流程实例并添加 Businesskey 业务标识 流程定义部署在 activiti 后 就可以在系统中通过 activiti 去管理该流程的执行 执行流程表示流程的一次执行 比如部署系统出差流程后 如果

    2026年3月18日
    3
  • winrm java客户端_winrm service

    winrm java客户端_winrm service今天看脚本忽然发现一个服务 叫 winRM 服务 这是个 PowerShell 的远程管理 开启它可以很大程度的方便用 PowerShell 操控 下面是我找到的一些资料 在 Linux 中 我们可以使用安全的 SSH 方便的进行远程管理 但在 Windows 下 除了不安全的 Telnet 以外 从 WindowsServe 开始提供了另外一种命令行原创管理方式 那就是基于 PowerShell 的 WinRM 下面就

    2026年3月26日
    2
  • Dijkstra算法时间复杂度分析[通俗易懂]

    Dijkstra算法时间复杂度分析[通俗易懂]文章目录Dijkstra算法的思路与关键点Dijkstra算法的时间复杂度之前一直默认Dijkstra算法时间复杂度为o(n2)o(n^{2})o(n2),没有思考过具体的时间复杂度,今天把这个弄清楚。Dijkstra算法的思路与关键点思路:广度优先+松弛所有点分为两个集合SSS和TTT,SSS最开始只包括源点sss,剩余点都位于TTT。SSS集合表示已经计算出最短路径的点集合,TTT表示尚未计算出最短路径的点集合。每次从集合TTT中选出一个与集合SSS距离最短的点vvv,将点vvv加

    2022年5月15日
    41
  • 右手螺旋判断磁感应强度方向_右手螺旋定则判断磁场方向

    右手螺旋判断磁感应强度方向_右手螺旋定则判断磁场方向展开全部大拇指和四指 e78988e69d53 弯曲后是同一平面且垂直 哪个是电流或磁场都无所谓 随机应变 已知电流方向时 可以用四指弯曲表示电流方向 此时大拇指是磁场方向 已知磁场方向时 可以用大拇指指向磁场方向 四直弯曲方向是电流方向 安培定则 也叫右手螺旋定则 是表示电流和电流激发磁场的磁感线方向间关系的

    2026年3月18日
    2
  • TSQL–临时表和表变量

    TSQL–临时表和表变量

    2021年11月26日
    49
  • android imageButton 透明图片

    android imageButton 透明图片

    2022年1月2日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号