如何将AWS SQS入站适配器连接到AMQP支持的消息通道?

时间:2019-01-12 00:32:49

标签: spring-integration spring-integration-aws spring-integration-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;
}

1 个答案:

答案 0 :(得分:1)

使用

adapter.setOutputChannelName("messageDriven");

,由工厂bean创建的通道将在运行时根据其名称进行解析。

编辑

或者,就像阿尔特姆所说的...

MessageProducer getSQSChannel(MessageChannel messageDriven) { 
    ... 
}