Skip to content

发送普通消息时rabbitTemplate.setConfirmCallback回调方法msgId为null #19

@ijaychang

Description

@ijaychang
        // 消息发送到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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions