如何使用 spring 集成 java DSL 将消息发送到 rabbitmq 队列

我编写了简单的示例来从控制台读取文本并将其发送到rabbitMq服务器:


@Configuration

@EnableIntegration

@IntegrationComponentScan

public class Config {


    @Autowired

    private AmqpTemplate amqpTemplate;


    @Bean

    public IntegrationFlow fromConsoleToRabbitFlow() {

        return IntegrationFlows.from(consoleSource(), c -> c.id("consoleInput")

                .poller(Pollers.fixedRate(1000))

                .autoStartup(true)

        ).channel("consoleOutputChannel")

                .handle(Amqp.outboundAdapter(amqpTemplate).routingKey("my_spring_integration_queue"))

                .get();

    }


    public MessageSource<String> consoleSource() {

        return CharacterStreamReadingMessageSource.stdin();

    }


}

my_spring_integration_queue它看起来几乎可以工作的解决方案,但我在rabbitmq管理控制台中找不到:

http://img1.mukewang.com/64928acf000164aa11640614.jpg

但我在其他选项卡上找不到与“my_spring_integration_queue”相关的任何内容。我在哪里可以找到它?

我希望应用程序会创建队列(如果不存在)。我无法找到发送到队列的方法,所以我使用了.routingKey方法。我也尝试过.exchangeName方法,但它导致:

32019-08-27 13:26:15.972 ERROR 16372 --- [ 127.0.0.1:5672] o.s.a.r.c.CachingConnectionFactory       : Channel shutdown: channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no exchange 'my_spring_integration_queue' in vhost '/', class-id=60, method-id=40)

聚苯乙烯

队列选项卡如下所示:

http://img3.mukewang.com/64928ae60001400e11270923.jpg

DIEA
浏览 120回答 1
1回答

阿晨1998

您需要手动添加队列或使用 aRabbitAdmin @Bean自动为您声明它 - 管理员将找到所有类型的 beansQueue并声明它们。如果你使用的是 Spring Boot,它会自动为你配置一个管理 bean,所以你只需要Queue @Bean.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java