coolmq
coolmq copied to clipboard
发送普通消息时rabbitTemplate.setConfirmCallback回调方法msgId为null
// 消息发送到RabbitMQ交换器后接收ack回调
rabbitTemplate.setConfirmCallback((correlationData, ack, cause) -> {
if(returnFlag){
logger.error("mq发送错误,无对应的的交换机,confirm回掉,ack={},correlationData={} cause={} returnFlag={}",
ack, correlationData, cause, returnFlag);
}
logger.info("confirm回调,ack={} correlationData={} cause={}", ack, correlationData, cause);
String msgId = correlationData.getId();
/** 只要消息能投入正确的消息队列,并持久化,就返回ack为true*/
if(ack){
logger.info("消息已正确投递到队列, correlationData:{}", correlationData);
//清除重发缓存
String dbCoordinatior = ((CompleteCorrelationData)correlationData).getCoordinator();
DBCoordinator coordinator = (DBCoordinator)applicationContext.getBean(dbCoordinatior);
coordinator.setMsgSuccess(msgId);
}else{
logger.error("消息投递至交换机失败,业务号:{},原因:{}",correlationData.getId(),cause);
}
});
coordinator.setMsgSuccess(msgId);报 java.lang.IllegalArgumentException: non null hash key required
注解上的bizname设置了么?
@vvsuperman 发送不同消息也要加@TransMessage注解,设置bizname吗。不是很明白。。。
普通消息么?不用@TransMessage?那应该去掉这个