Вам не нужны разные ProducerTemplate
с, просто для отправки сообщений на разные конечные точки.Однако это может быть удобно.
Отправка сообщений на любую конечную точку
Использование методов send*
(InOnly) и request*
(InOut) ProducerTemplate , которые принимаютURI целевой конечной точки в качестве первого аргумента.
template.sendBody("activemq:MyQueue", "<hello>world!</hello>");
template.requestBody("direct:MyEndpoint", "<hello>world!</hello>");
Добавление нескольких шаблонов Producer с верблюжьей аннотацией
Подробнее см. Документы о верблюдах .
@EndpointInject(uri = "activemq:MyQueue")
protected ProducerTemplate myQueueProducer;
@EndpointInject(uri = "direct:MyEndpoint")
protected ProducerTemplate myEndpointProducer;
Автоматическое подключение нескольких шаблонов Producer (Spring)
Поскольку требуется несколько экземпляров одного типа, их необходимо вводить по имени с аннотацией @Qualifier
,Было бы лучше настроить конечную точку по умолчанию в конфигурации Spring Bean, я просто добавил вызовы setDefaultEndpointUri
, чтобы показать, как это сделать.
@Autowired
@Qualifier("myQueueProducer")
protected ProducerTemplate myQueueProducer;
@Autowired
@Qualifier("myEndpointProducer")
protected ProducerTemplate myEndpointProducer;
...
myQueueProducer.setDefaultEndpointUri("activemq:MyQueue")
myEndpointProducer.setDefaultEndpointUri("direct:MyEndpoint")