我是Spring Integration的新手,也许这个问题很简单。我正在查看从stdin:
创建RabbitMq消息的示例(https://github.com/spring-projects/spring-integration-samples/tree/master/basic/amqp)<int-stream:stdin-channel-adapter id="consoleIn"
channel="toRabbit">
<int:poller fixed-delay="1000" max-messages-per-poll="1" />
</int-stream:stdin-channel-adapter>
<int:channel id="toRabbit" />
<int-amqp:outbound-channel-adapter
channel="toRabbit" amqp-template="amqpTemplate"
exchange-name-expression="payload.toLowerCase() == 'nack' ? 'badExchange' : 'si.test.exchange'"
routing-key-expression="payload.toLowerCase() == 'fail' ? 'badKey' : 'si.test.binding'"
confirm-correlation-expression="payload"
confirm-ack-channel="good"
confirm-nack-channel="errors"
return-channel="returns" />
如果我们需要使用Java代码生成自定义消息,该怎么办?什么是优雅的代码?填充消息的bean被简化了:
package com.mycompany.domain.price;
public class UpdateMessage implements Serializable {
Date effStartDate;
Date effEndDate;
Long orderId = -1;
String customerFullName;
...
}
答案 0 :(得分:1)
见this answer;虽然它是在谈论Axis而不是RabbitMQ;相同的技术适用。
由于您的UpdateMessage
实施Serializable
,标准邮件转换器会为您转换为byte[]
。
发送没有回复的邮件,您的网关接口方法可能是
public void send(UpdateMessage msg);
在这种情况下,您使用出站通道适配器。如果要获得回复,请使用amqp出站网关,服务接口可能看起来像
public UpdateResult send(UpdateMessage msg);
如果您不使用Serializable
个对象,则可能需要使用json转换器。