如何将 AWS SQS 入站适配器连接到 AMQP 支持的消息通道?
How do I connect an AWS SQS Inbound Adapter to an AMQP Backed Message Channel?
我已经通过 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 创建的通道将在运行时根据其名称进行解析。
编辑
或者,正如 Artem 所说...
MessageProducer getSQSChannel(MessageChannel messageDriven) {
...
}
我已经通过 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 创建的通道将在运行时根据其名称进行解析。
编辑
或者,正如 Artem 所说...
MessageProducer getSQSChannel(MessageChannel messageDriven) {
...
}