我编写了简单的示例来从控制台读取文本并将其发送到 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 管理控制台中找不到:
但我在其他选项卡上找不到与“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)
附言
队列选项卡如下所示: