Spring integration Spring云流-功能-如何手动确认rabbitmq消息?

Spring integration Spring云流-功能-如何手动确认rabbitmq消息?,spring-integration,spring-cloud,spring-cloud-stream,spring-amqp,spring-rabbit,Spring Integration,Spring Cloud,Spring Cloud Stream,Spring Amqp,Spring Rabbit,我正在使用rabbitbinder的spring cloud stream 使用@StreamListener,我可以通过将Channel和deliveryTag注入方法中来手动确认rabbitmq消息,如下所示: @StreamListener(target=MySink.INPUT1) public void listenForInput1(消息, @标题(AmqpHeaders.CHANNEL)通道, @标题(AmqpHeaders.DELIVERY_标记)Long deliveryTag

我正在使用rabbitbinder的spring cloud stream

使用@StreamListener,我可以通过将Channel和deliveryTag注入方法中来手动确认rabbitmq消息,如下所示:

@StreamListener(target=MySink.INPUT1)
public void listenForInput1(消息,
@标题(AmqpHeaders.CHANNEL)通道,
@标题(AmqpHeaders.DELIVERY_标记)Long deliveryTag)引发IOException{
log.info(“收到的新消息[“+message.toString()+”]);
channel.basicAck(deliveryTag,false);
}
我现在正尝试使用以下功能实现相同的功能:

@Bean
公共消费者协会1(){
返回消息->{
System.out.println(“*******************”);
System.out.println(“在Sink1”);
System.out.println(“*******************”);
System.out.println(“接收到的消息”+message.getPayload());
};
}
如何在此处获取通道对象,以便使用deliveryTag确认它?
我能够获得交付标签表单标题。但是,我无法获取通道对象。

我能够找到它:

  @Bean
  public Consumer<Message<String>> sink1() {
    return message -> {
      System.out.println("******************");
      System.out.println("At Sink1");
      System.out.println("******************");
      System.out.println("Received message " + message.getPayload());

      Channel channel = message.getHeaders().get(AmqpHeaders.CHANNEL, Channel.class);
      Long deliveryTag = message.getHeaders().get(AmqpHeaders.DELIVERY_TAG, Long.class);

      try {
        channel.basicAck(deliveryTag, false);
      } catch (IOException e) {
        e.printStackTrace();
      }
    };
  }
@Bean
公共消费者协会1(){
返回消息->{
System.out.println(“*******************”);
System.out.println(“在Sink1”);
System.out.println(“*******************”);
System.out.println(“接收到的消息”+message.getPayload());
Channel=message.getHeaders().get(AmqpHeaders.Channel,Channel.class);
Long deliveryTag=message.getHeaders().get(AmqpHeaders.DELIVERY_标记,Long.class);
试一试{
channel.basicAck(deliveryTag,false);
}捕获(IOE异常){
e、 printStackTrace();
}
};
}

我试过了,我只能在两天后才能这么做:),所以我明天就可以接受了。