如何在spring-rabbitmq 1.x中获取consumerTag

How to get consumerTag in spring-rabbitmq 1.x

spring-rabbitmq 配置类似于

            <groupId>org.springframework.amqp</groupId>
            <artifactId>spring-rabbit</artifactId>
            <version>1.1.3.RELEASE</version>

我想取消消费者,使用channel.basicCannel(consumerTag)

当我在 spring-rabbitmq 2.x 版本中使用 ChannelAwareMessageListener 时,consumerTag 是 在 MessageProperties, 但是我的在线服务使用的是1.x版本,MessageProperties中没有consumerTag, 所以我不能使用 basicCancel api

下面是我的完整监听器代码

public class RPCListener implements ChannelAwareMessageListener {
    private static final Logger log = LoggerFactory.getLogger(RPCListener.class);

    @Autowired
    private MessagePropertiesConverter messagePropertiesConverter;

    private MessageConverter messageConverter = new SimpleMessageConverter();

    @Autowired
    private AmqpTemplate amqpTemplate;
    private Boolean flag = false;

    @Override
    public void onMessage(Message message, Channel channel) throws Exception {
        try {
            log.error("DeliveryTag(): {}", message.getMessageProperties().getDeliveryTag());
            if (flag) {
                log.error("canceling....");
                //If true, messages will be requeued and possibly
                channel.basicRecover(true);
                // there is no consumerTag property in MessageProperties 
                //channel.basicCancel(message.getMessageProperties().getConsumerTag());
                return;
            }
            amqpTemplate.send(message.getMessageProperties().getReplyTo(), message);
            channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public Boolean getFlag() {
        return flag;
    }

    public void setFlag(Boolean flag) {
        this.flag = flag;
    }
}

有什么办法可以获取consumerTag吗?

谢谢大家!

1.1.3 7岁; consumerTag 已添加到 1.4.2 中的 MessageProperties

唯一受支持的 1.x 版本是 1.7.14 - 请参阅 the project page

1.7.x今年以后将不再支持

但是;你不应该不手动取消消费者;而是停止容器。