spring-integration - 如何将 AWS SQS 入站适配器连接到 AMQP 支持的消息通道?
问题描述
我已经通过 Java 使用直接通道成功地为 AWS SQS 配置了入站通道适配器。该项目使用 JDBC 和 RabbitMQ 与 SQS 的组合作为 3 个独立队列的入站流。我需要持久消息,所以我试图弄清楚如何利用 RabbitMQ。我对如何引用 AMQP 通道感到困惑。如何从 setOutPutChannel 引用 AMQP 消息通道?我的目标是仅在消息成功发布到 RabbitMQ 持久队列时才将消息从 SQS 中删除。
@Bean
public MessageProducer getSQSChannel() {
SqsMessageDrivenChannelAdapter adapter = new SqsMessageDrivenChannelAdapter(this.amazonSqs, MY_SQS_QUEUE);
adapter.setOutputChannel(????);
return adapter;
}
@Bean
public AmqpChannelFactoryBean messageDriven(ConnectionFactory connectionFactory) {
AmqpChannelFactoryBean factoryBean = new AmqpChannelFactoryBean(true);
factoryBean.setConnectionFactory(connectionFactory);
factoryBean.setQueueName("bar");
factoryBean.setPubSub(false);
return factoryBean;
}
解决方案
采用
adapter.setOutputChannelName("messageDriven");
工厂 bean 创建的通道将在运行时从其名称中解析。
编辑
或者,正如阿尔乔姆所说...
MessageProducer getSQSChannel(MessageChannel messageDriven) {
...
}
推荐阅读
- python - Python prompt_toolkit:当用户按下回车键时选择最佳模糊匹配
- c# - 解析表达式的最佳方法 - 多个变量
- javascript - 按位运算如何在布尔值上工作?
- java - 使用 mongodb spring boot 的日期进行分页
- python-3.x - 如何在python中为变量的值赋值
- java - 如何制作像 JOptionPane 一样工作的 JPanel?
- javascript - Firebase:将实时数据库时间戳转换为 Firestore 时间戳的代码/公式?
- ionic4 - 我们可以将 Angularfire 与本地托管的 ionic 应用程序一起使用吗?
- mongodb - 如何对本地和外部数组字段进行 Mongodb $lookup
- c# - 简单的字符串比较因性别检查而失败