Spring RabbitMQ匿名队列

时间:2016-03-28 18:32:16

标签: rabbitmq spring-amqp spring-rabbit spring-rabbitmq

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

我有三个应用实例。

的Instance1 实例2 实例3

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

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

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

第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 个答案:

答案 0 :(得分:1)

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

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

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