java 如何使用 Rabbit MQ 将相关 ID 从发送者发送到消息中,以及从接收到消息头中检索

How to send correlation id, into message, from sender and retrieval from receive into message header with Rabbit MQ by java

我已经使用 Rabbit MQ 发送和接收 JSON 消息。
我已经使用带有 convertAndSend 方法的 RabbitTemplate 实例实现了一个应用程序来向交换器发送消息,如下所示:

rabbitTemplate.convertAndSend(exchangeNameOut, message.getString(PERSISTENCE_MESSAGE_ROUTING_KEY),
                    message.getString(PERSISTENCE_MESSAGE_BODY), new CorrelationData(""+analyticRuntime.getId()));

在接收方接收消息时,我实现了以下方法:

        @RabbitListener(queues = "${rabbit.queue.mail.name}",containerFactory = "rabbitListenerContainerFactory")
     public void processMailMessage(Message message) {
        log.info("ENTER [processMailMessage]  ");

        Mail mail;

            JSONObject messageBody = new JSONObject(new String(message.getBody()));

            String asset = "" + messageBody.get(Constants.PERSISTENCE_MESSAGE_ASSET_ID_KEY);

            String body = "" + messageBody.get(Constants.PERSISTENCE_MESSAGE_EVENT_KEY);

            String alarms = "";
            log.info("[processMailMessage] message.getMessageProperties().getCorrelationId() : " + message.getMessageProperties().getCorrelationId()";
}

问题是:

谢谢

否;相关数据用于关联发布者确认发送;它与关联 ID 属性.

无关

使用 MessagePostProcessor:

rabbitTemplate.convertAndSend(exchangeNameOut, message.getString(PERSISTENCE_MESSAGE_ROUTING_KEY),
                message.getString(PERSISTENCE_MESSAGE_BODY), 
    m -> {
        m.getMessageProperties().setCorrelationIdString(""+analyticRuntime.getId());
        return m;
    });

如果您不使用 Java8,请使用 new MessagePostProcessor() { ... }