首页 文章

Spring RabbitMQ匿名队列

提问于
浏览
1

我是Spring-rabbitMQ的新手 . 我有以下问题 . 如果错了,请更正:

我有三个应用实例 .

Instance1 Instance2 Instance3

注意:这些实例不需要是固定的数字 . 所有这些实例都听同一个交换 . 由于实例数量不固定,我的要求是所有三个/(数字可以)变量收到的相同消息 . 如何使用spring-amqp实现这一目标

如果声明队列名称和绑定交换消息将在实例之间拆分..但我想要rabbitmq消息(来自交换的消息)到所有队列..我们怎么能实现这一点..我听到一些像匿名队列的事情 . ..

如何在Spring中以编程方式实现此方法,而不是通过xml声明并使用SPEL声明队列ID

步骤1:创建连接工厂步骤2:创建交换步骤3:创建队列步骤4:创建AMQP管理员然后声明该队列步骤5:绑定队列以进行交换

同样在停止实例时,队列应该被自动删除..应该在post-construct中给出?

目前的代码如下:

CachingConnectionFactory cf = new CachingConnectionFactory("192.168.1.10", 5672);

    RabbitAdmin admin = new RabbitAdmin(cf);

    FanoutExchange testExchange = new FanoutExchange("testExchange", true, false);
    admin.declareExchange(testExchange);

    Queue testQueue = new Queue("testQueue", true, false, true);
    admin.declareQueue(testQueue);

    admin.declareBinding(BindingBuilder.bind(testQueue).to(testExchange));

    SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
    container.setConnectionFactory(cf);
    container.setRabbitAdmin(admin);

    container.setQueues(testQueue);
    container.setMessageListener(new MessageListenerAdapter() {
        public void handleMessage(String text) {
            System.out.println("Received : " + text);
        }
    });
    container.afterPropertiesSet();

    container.start();

1 回答

  • 1

    您使用 autodeleted 队列正确,但它们可能不是 anonymous ,尽管每个实例可能是唯一的 .

    这里的主要功能是 Fanout Exchange . 确切地说,此Exchange能够向所有订阅(绑定)队列发送相同的消息 .

    您可以在RabbitMQ Tutorial中找到更多信息 .

相关问题