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

问题描述 投票:0回答:1

spring-rabbitmq的配置是这样的

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

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

当我使用 ChannelAwareMessageListener 在spring-rabbitmq 2.x版本中。consumerTag 融入 MessageProperties但我的在线服务使用的是1.x版本,没有任何的 consumerTagMessageProperties所以我不能使用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吗?

谢谢大家

spring-amqp
1个回答
1
投票

1.1.3是7年前的事了。consumerTag 被添加到 MessageProperties1.4.2.

唯一支持的1.x版本是1.7.14 - 见 项目页面.

1.7.x在今年之后将不再支持。

然而,您应该 不要手动取消消费者停止容器。

© www.soinside.com 2019 - 2024. All rights reserved.