如何使用 Spring 集成配置简单的 RabbitMQ 消息生成器
How to configure simple RabbitMQ message producer with Spring Integration
我想使用 Spring 集成构造配置一个简单的 RabbitMQ 消息生成器。要求非常基本:只是简单的即发即弃,将事件消息发送到队列,不需要响应。
我已经配置了连接工厂、RabbitTemplate 和出站通道适配器(见下文),但缺少最后一部分:实际将消息发送到通道的代码。
提前致谢。
<rabbit:connection-factory id="producerRabbitConnectionFactory"
channel-cache-size="${amqp.channel.cache.size}"
host="${amqp.hostname}"
port="${amqp.port}"
virtual-host="${amqp.vhost}"
username="${amqp.username}"
password="${amqp.password}"
requested-heartbeat="${amqp.heartbeat}"
/>
<bean id="producerRabbitTemplate" class="org.springframework.amqp.rabbit.core.RabbitTemplate">
<property name="connectionFactory" ref="producerRabbitConnectionFactory" />
<property name="exchange" value="${amqp.exchange.event}" />
<property name="routingKey" value="${amqp.routingKey.event}" />
</bean>
<int:channel id="outboundAmqpChannel" />
<int-amqp:outbound-channel-adapter id="outboundAmqpChannelAdapter"
channel="outboundAmqpChannel"
amqp-template="producerRabbitTemplate"
default-delivery-mode="NON_PERSISTENT"
lazy-connect="true"/>
最简单的是一个Messaging Gateway。这样您的代码就不知道您在与集成流程对话。
public interface Foo {
void bar(String foo);
}
<int:gateway service-interface="foo.Foo" default-request-channel="outboundAmqpChannel" />
在您的代码中注入一个 Foo
并调用它。
我想使用 Spring 集成构造配置一个简单的 RabbitMQ 消息生成器。要求非常基本:只是简单的即发即弃,将事件消息发送到队列,不需要响应。 我已经配置了连接工厂、RabbitTemplate 和出站通道适配器(见下文),但缺少最后一部分:实际将消息发送到通道的代码。 提前致谢。
<rabbit:connection-factory id="producerRabbitConnectionFactory"
channel-cache-size="${amqp.channel.cache.size}"
host="${amqp.hostname}"
port="${amqp.port}"
virtual-host="${amqp.vhost}"
username="${amqp.username}"
password="${amqp.password}"
requested-heartbeat="${amqp.heartbeat}"
/>
<bean id="producerRabbitTemplate" class="org.springframework.amqp.rabbit.core.RabbitTemplate">
<property name="connectionFactory" ref="producerRabbitConnectionFactory" />
<property name="exchange" value="${amqp.exchange.event}" />
<property name="routingKey" value="${amqp.routingKey.event}" />
</bean>
<int:channel id="outboundAmqpChannel" />
<int-amqp:outbound-channel-adapter id="outboundAmqpChannelAdapter"
channel="outboundAmqpChannel"
amqp-template="producerRabbitTemplate"
default-delivery-mode="NON_PERSISTENT"
lazy-connect="true"/>
最简单的是一个Messaging Gateway。这样您的代码就不知道您在与集成流程对话。
public interface Foo {
void bar(String foo);
}
<int:gateway service-interface="foo.Foo" default-request-channel="outboundAmqpChannel" />
在您的代码中注入一个 Foo
并调用它。