RabbitTemplate.convertSendAndReceive 与 org.springframework.messaging.Message 一起使用

Use of RabbitTemplate.convertSendAndReceive with org.springframework.messaging.Message

我已成功使用以下方法发送 org.springframework.amqp.core.Message 并接收 byte []

import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.rabbit.core.RabbitTemplate;

Message message = 
MessageBuilder.withBody(payload)..setCorrelationIdString(id).build();
byte [] response = (byte[]) rabbitTemplate.convertSendAndReceive(message,m -> {
        m.getMessageProperties().setCorrelationIdString(id);

如果队列设置为正确处理 Message<?> 的消息,则此方法工作正常。但是我有一系列使用消息类型 org.springframework.messaging.Message 的队列,特别是 Message<String>.

有没有一种方法可以使用 rabbitTemplate.convertSendAndReceive 发送 org.springframework.messaging.Message 消息 。这样下面的就可以了。

import org.springframework.messaging.Message; 
import org.springframework.integration.support.MessageBuilder;
import org.springframework.amqp.rabbit.core.RabbitTemplate;

Message<String> message = 
MessageBuilder.withPayload(payload).setCorrelationId(id).build();
Object returnObject = rabbitTemplate.convertSendAndReceive(message);

我查看了 MessageConverter,但不确定是否可以使用它。

或者,我应该使用 org.springframework.messaging.core.GenericMessagingTemplate.convertSendAndReceive

更新。

如果我改变我在队列中的内容,我可以让它工作

@Transformer(inputChannel = Processor.INPUT, outputChannel = Processor.OUTPUT) public Message<String> transform(Message<String> inMessage) {

@Transformer(inputChannel = Processor.INPUT, outputChannel = Processor.OUTPUT) public Message<String> transform(Message<?> inMessage) { GenericMessage<?> genericMessage = (GenericMessage<?>)inMessage.getPayload(); String payload = (String)genericMessage.getPayload();

但我宁愿不必更改转换器来使它工作,因为有问题的代码用于集成测试,并且现有代码已经与我已有的代码一起工作。

更新结束

我想我已经提供了足够的信息,但如果需要更多详细信息,请告诉我。理想情况下,我正在寻找一个代码示例或向我指出可以回答我的问题的文档。

使用 RabbitMessagingTemplate documentation here.

public Message<?> sendAndReceive(String exchange, String routingKey, Message<?> requestMessage)