如何使用 Spring 集成从 Java bean 正确创建 RabbitMQ 自定义消息?
How to properly create RabbitMQ custom message from Java bean with Spring Integration?
我是 Spring 集成方面的新手,也许这个问题很简单。我正在查看示例 (https://github.com/spring-projects/spring-integration-samples/tree/master/basic/amqp) 从标准输入创建 RabbitMq 消息:
<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;
...
}
参见;尽管它谈论的是 Axis 而不是 RabbitMQ;同样的技术也适用。
由于您的 UpdateMessage
实现了 Serializable
,标准消息转换器将为您负责转换为 byte[]
。
发送消息没有回复,您的网关接口方法可能是
public void send(UpdateMessage msg);
在这种情况下,您将使用出站通道适配器。如果你想得到回复,使用 amqp 出站网关,服务接口可能看起来像
public UpdateResult send(UpdateMessage msg);
如果您不使用 Serializable
对象,则使用 json 转换器可能更合适。
我是 Spring 集成方面的新手,也许这个问题很简单。我正在查看示例 (https://github.com/spring-projects/spring-integration-samples/tree/master/basic/amqp) 从标准输入创建 RabbitMq 消息:
<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;
...
}
参见
由于您的 UpdateMessage
实现了 Serializable
,标准消息转换器将为您负责转换为 byte[]
。
发送消息没有回复,您的网关接口方法可能是
public void send(UpdateMessage msg);
在这种情况下,您将使用出站通道适配器。如果你想得到回复,使用 amqp 出站网关,服务接口可能看起来像
public UpdateResult send(UpdateMessage msg);
如果您不使用 Serializable
对象,则使用 json 转换器可能更合适。