使用路由密钥使用 DirectExchange 消息并在 spring 启动时进行交换

Consume DirectExchange messages using routing key and exchange in spring boot

我正在尝试使用来自 exiting queue 的消息,其类型为 Direct Exchange(在交换和路由密钥的帮助下创建).我只有 交换名称 路由密钥 没有队列名称 。有对普通 Java 的支持,但没有地方可以找到它用于 Spring 引导。

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

如何使用路由密钥和交换名称而不是队列名称来使用消息,因为 @RabbitListener 要求 queue

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

编辑

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

    @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