конфигурация 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, в MessageProperties
нет consumerTag
, поэтому я не могу использовать API basicCancel
мой полный код слушателя ниже
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?
Всем спасибо!