RabbitMQ手动绑定多个指定路由

@Configuration
public class RabbitConfig {

    @Bean
    public ConnectionFactory connectionFactory() {
        CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory();
        cachingConnectionFactory.setPort(5672);
        cachingConnectionFactory.setUsername("admin");
        cachingConnectionFactory.setPassword("admin");
        cachingConnectionFactory.setHost("127.0.0.1");

        return cachingConnectionFactory;
    }
    @Bean
    public Channel channel(@Autowired ConnectionFactory connectionFactory) throws Exception{
        Channel channel = connectionFactory.createConnection().createChannel(false);
        channel.queueDelete("TEST_QUEUE");
        channel.queueDeclare("TEST_QUEUE",true,false,false,null);
        channel.queueBind("TEST_QUEUE","TEST_EXCHANGE","ROUTER01");
        channel.queueBind("TEST_QUEUE","TEST_EXCHANGE","ROUTER02");
        channel.queueBind("TEST_QUEUE","TEST_EXCHANGE","ROUTER03");
        return channel;
    }
}
@Component
public class DirectReceiver implements ApplicationRunner {

    @RabbitHandler
    @RabbitListener(autoStartup = "false",id = "routeId")
    public void process(String testMessage) {
        System.out.println("Receiver消费者收到消息  : " + testMessage.toString());
    }

    @Autowired
    private RabbitListenerEndpointRegistry rabbitListenerEndpointRegistry;

    @Override
    public void run(ApplicationArguments args) throws Exception {
        AbstractMessageListenerContainer container = (AbstractMessageListenerContainer)rabbitListenerEndpointRegistry.getListenerContainer("routeId");
        if (!container.isRunning()){
            container.setQueueNames("TEST_QUEUE");
            container.start();
        }
    }
}
还有一种AmqpAdmin动态管理交换机、队列、路由ID
@Autowired
private AmqpAdmin amqpAdmin;


@Test
public void amqpAmindTest() {
    // 创建交换机
	amqpAdmin.declareExchange(new DirectExchange("amqpadmin.exchange"));
	// 创建队列
	amqpAdmin.declareQueue(new Queue("amqpadmin.queue"));
	//交换机和队列绑定,并绑定Routing key
	amqpAdmin.declareBinding(new Binding("amqpadmin.queue", Binding.DestinationType.QUEUE,"amqpadmin.exchange","routing-key",null));
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值