Как я могу получить несколько разных экземпляров ProducerTemplate с автоматически настраиваемыми шаблонами производителя? - PullRequest
0 голосов
/ 29 ноября 2018

Как я могу получить несколько разных ProducerTemplate экземпляров с автоматически настраиваемыми шаблонами производителя?Если я использую автоматически настроенный ProducerTemplate, как я могу получить несколько разных ProducerTemplate экземпляров?

Например, мне нужно использовать producertemplate для отправки разных обменов на разные конечные точки.В этом случае мне нужны разные экземпляры шаблона производителя?Если да, то как я могу это сделать?

Автоконфигурированные шаблоны потребителя и производителя
Автоконфигурация Camel предоставляет предварительно сконфигурированные экземпляры ConsumerTemplate и ProducerTemplate.Вы можете просто внедрить их в компоненты, управляемые Spring:

@Component
public class InvoiceProcessor {    
  @Autowired
  private ProducerTemplate producerTemplate;

  @Autowired
  private ConsumerTemplate consumerTemplate;
  public void processNextInvoice() {
    Invoice invoice = consumerTemplate.receiveBody("jms:invoices", Invoice.class);
    ...
    producerTemplate.sendBody("netty-http:http://invoicing.com/received/" + invoice.id());
  }
}  

1 Ответ

0 голосов
/ 04 декабря 2018

Вам не нужны разные 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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...