我已成功使用以下内容发送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消息&lt;串取代。以下是可行的。
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();
但我宁愿不必更改变换器来使其工作,因为有问题的代码用于集成测试,现有代码已经与我已有的一起工作。
END UPDATE
我想我已经提供了足够的信息,但如果需要更多细节,请告诉我。理想情况下,我正在寻找代码示例或指向我回答我的问题的文档。
答案 0 :(得分:0)
使用RabbitMessagingTemplate
documentation here。
public Message<?> sendAndReceive(String exchange, String routingKey, Message<?> requestMessage)