首页 > 解决方案 > 如何将 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;
}

标签: spring-integrationspring-integration-awsspring-integration-amqp

解决方案


采用

adapter.setOutputChannelName("messageDriven");

工厂 bean 创建的通道将在运行时从其名称中解析。

编辑

或者,正如阿尔乔姆所说...

MessageProducer getSQSChannel(MessageChannel messageDriven) { 
    ... 
}

推荐阅读