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)
我已成功使用以下方法发送 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)