如何在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今年以后将不再支持
但是;你不应该不手动取消消费者;而是停止容器。
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今年以后将不再支持
但是;你不应该不手动取消消费者;而是停止容器。