为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

DIEA 2023-06-21 13:29:10
我编写了简单的示例来从控制台读取文本并将其发送到rabbitMq服务器:@Configuration@EnableIntegration@IntegrationComponentScanpublic 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管理控制台中找不到:但我在其他选项卡上找不到与“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)聚苯乙烯队列选项卡如下所示:
查看完整描述

1 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

您需要手动添加队列或使用 aRabbitAdmin @Bean自动为您声明它 - 管理员将找到所有类型的 beansQueue并声明它们。

如果你使用的是 Spring Boot,它会自动为你配置一个管理 bean,所以你只需要Queue @Bean.

查看完整回答
反对 回复 2023-06-21
  • 1 回答
  • 0 关注
  • 87 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信