在春季启动时使用路由键消费DirectExchange消息并进行交换

时间:2019-09-12 01:58:03

标签: rabbitmq spring-rabbitmq spring-rabbit

我正在尝试使用直接交换类型(通过交换和路由密钥创建)的退出队列中的消息。我只有交换名称路由键,而没有队列名称。有对纯Java的支持,但没有地方可以在Spring引导中找到它。

@RabbitListener
    @RabbitHandler
    public void consumeMessage(Object message) {
        LOGGER.debug("Message Consumed.... : {}", message.toString());
    }

如何使用带有路由密钥和交换名而不是队列名的消息来消费消息,而@RabbitListener要求queue

1 个答案:

答案 0 :(得分:1)

消费者从队列消费而不是交换。您必须使用路由键将队列绑定到交换机。

编辑

有几种方法可以在代理上自动声明队列。

    @RabbitListener(bindings = 
        @QueueBinding(exchange = @Exchange("myExchange"), 
            key = "myRk", value = @Queue("")))
    public void listen(String in) {
        System.out.println(in);
    }

这将绑定一个匿名队列(自动删除),该匿名队列将在应用程序停止时删除。

    @RabbitListener(bindings = 
        @QueueBinding(exchange = @Exchange("myExchange"), 
            key = "myRk", value = @Queue("foo")))
    public void listen(String in) {
        System.out.println(in);
    }

将使用路由密钥将永久队列foo绑定到交换机。

您还可以简单地声明#Bean来表示队列,交换和绑定。

请参见Configuring the broker