2015-02-25 5 views
3

Я хотел бы настроить простого производителя сообщений RabbitMQ с использованием конструкций Spring Integration. Требование является очень простым: просто пропустить «огонь-и-забыть», отправив сообщение о событии в очередь, никакого ответа не требуется. Я настроил фабрику соединений, RabbitTemplate и адаптер исходящего канала (см. Ниже), но пропустил последнюю часть: код, который фактически отправляет сообщение на канал. Спасибо заранее.Как настроить простого производителя сообщений RabbitMQ с интеграцией с весной

<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"/> 

ответ

4

Простейший - это Messaging Gateway. Таким образом, ваш код не знает вашего разговора с потоком интеграции.

public interface Foo { 

    void bar(String foo); 

} 

<int:gateway service-interface="foo.Foo" default-request-channel="outboundAmqpChannel" /> 

Внесите Foo в свой код и позвоните по телефону.

+0

Это работает отлично. Спасибо, Гэри! –