RabbitMq如何配置多个Virtual host生产者和消费者

** springboot服务下进行rabbitmq生产和消费自定义配置@Configuration

1、生产者进行配置

1-1配置主连接工厂

@Bean("connectionFactory")
    @Primary//这个地方必须声明一个唯一主要的
    public CachingConnectionFactory connectionFactory(){
        CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory(host,port);
        cachingConnectionFactory.setUsername(username);
        cachingConnectionFactory.setPassword(password);
        cachingConnectionFactory.setVirtualHost(virtualHost);
        return cachingConnectionFactory;
    }

1-2配置主模板

    @Bean("rabbitTemplate")
    @Primary
    public RabbitTemplate rabbitTemplate(@Qualifier("connectionFactory") CachingConnectionFactory connectionFactory){
        return new RabbitTemplate(connectionFactory);
    }

1-3配置次连接工厂

 @Bean("connectionSecondFactory")
    public CachingConnectionFactory connectionSecondFactory(){
        CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory(host,port);
        cachingConnectionFactory.setUsername(username);
        cachingConnectionFactory.setPassword(password);
        cachingConnectionFactory.setVirtualHost(virtualHostOld);
        return cachingConnectionFactory;
    }

1-4配置次模板

  @Bean("rabbitTemplateSecond")
    public RabbitTemplate rabbitTemplateSecond(@Qualifier("connectionSecondFactory") CachingConnectionFactory connectionSecondFactory){
        return new RabbitTemplate(connectionSecondFactory);
    }

2、消费者进行配置

2-1、自定义消费者监听工厂

    @Bean("newContainerFactory")
    public SimpleRabbitListenerContainerFactory newContainerFactory(SimpleRabbitListenerContainerFactoryConfigurer configurer,
                                                                    @Qualifier("connectionSecondFactory") ConnectionFactory connectionFactory){
        SimpleRabbitListenerContainerFactory listenerContainerFactory = new SimpleRabbitListenerContainerFactory();
        listenerContainerFactory.setAcknowledgeMode(AcknowledgeMode.AUTO);
        configurer.configure(listenerContainerFactory, connectionFactory);
        return listenerContainerFactory;

    }

2-2、指定自定义消费者工厂进行监听消费

2-2-1、执行自定义消费工厂进行消息对列消费
 @RabbitListener(queues =  "${queue.****}",containerFactory ="newContainerFactory" )
2-2-2、默认工厂进行消息对列消费
    @RabbitListener(queues = ComboRabbitMQQueneConstant.QUEUE_COMBO_ORDER_PAY)
2-2-3、默认工厂进行消息对列消费,如果当前对列不存在主动创建
 @RabbitListener(queuesToDeclare = @Queue(value = AspectRabbitMQQueneConstant.QUEUE_ASPECT_AOP_LOG))
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,以下是Spring Boot集成RabbitMQ注解驱动方式编写生产者消费者的示例代码: 首先,需要在`pom.xml`文件中添加RabbitMQ依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> ``` 接着,在`application.properties`文件中配置RabbitMQ相关信息: ```properties spring.rabbitmq.host=localhost spring.rabbitmq.port=5672 spring.rabbitmq.username=guest spring.rabbitmq.password=guest spring.rabbitmq.virtual-host=/ ``` 然后,编写生产者代码: ```java import org.springframework.amqp.core.AmqpTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component public class RabbitMQProducer { @Autowired private AmqpTemplate amqpTemplate; public void send(String message) { amqpTemplate.convertAndSend("queue_name", message); } } ``` 其中,`AmqpTemplate`是RabbitMQ操作的模板类,通过调用`convertAndSend`方法发送消息到指定的队列。 最后,编写消费者代码: ```java import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component; @Component public class RabbitMQConsumer { @RabbitListener(queues = "queue_name") public void receive(String message) { System.out.println("Received message: " + message); } } ``` 通过`@RabbitListener`注解绑定指定的队列,当队列中有消息时,会自动调用`receive`方法进行消费。 以上就是使用注解驱动方式编写RabbitMQ生产者消费者的示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山不在高_有仙则灵

你的奖励是我的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值