Как подключить входящий адаптер AWS SQS к каналу сообщений с поддержкой AMQP? - PullRequest
0 голосов
/ 12 января 2019

Я успешно настроил через Java адаптер входящего канала для AWS SQS, используя прямой канал. Этот проект использует комбинацию JDBC и RabbitMQ с SQS в качестве входящего потока для 3 отдельных очередей. Мне нужны надежные сообщения, поэтому я пытаюсь понять, как использовать RabbitMQ. Я запутался в том, как ссылаться на канал AMQP. Как мне обратиться к каналу сообщений AMQP из setOutPutChannel? Моя цель - удалить сообщение из SQS только в том случае, если сообщение успешно опубликовано в долговременной очереди RabbitMQ.

@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 голосов
/ 12 января 2019

Используйте

adapter.setOutputChannelName("messageDriven");

и канал, созданный фабричным компонентом, будет разрешен из его имени во время выполнения.

EDIT

Или, как сказал Артем ...

MessageProducer getSQSChannel(MessageChannel messageDriven) { 
    ... 
}
...