代码之家  ›  专栏  ›  技术社区  ›  Jim Hankins

如何将aws sqs入站适配器连接到amqp支持的消息通道?

  •  0
  • Jim Hankins  · 技术社区  · 6 年前

    我已经成功地通过Java配置了一个使用直接通道的AWS SQL的入站通道适配器。该项目使用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 回复  |  直到 6 年前
        1
  •  1
  •   Gary Russell    6 年前

    使用

    adapter.setOutputChannelName("messageDriven");
    

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

    编辑

    或者,正如阿泰姆所说……

    MessageProducer getSQSChannel(MessageChannel messageDriven) { 
        ... 
    }
    
    推荐文章