ProducerTemplate должен быть только один экземпляр - PullRequest
4 голосов
/ 25 октября 2011

Мы используем Spring и Camel в нашем веб-приложении.В одном из наших контроллеров мы используем ProducerTemplate для отправки сообщения по маршруту, и теперь я хочу добавить еще один контроллер, который будет отправлять сообщение по отдельному маршруту.Я пытаюсь понять, если мы предполагаем, что у нас будет только один шаблон ProducerTemplate для всего приложения?

Я спрашиваю об этом, потому что я немного запутался после прочтения this .

Ответы [ 2 ]

4 голосов
/ 25 октября 2011

Цитируется по ссылке, которую вы дали:

Вы не должны создавать ProducerTemplate для каждого вызова сообщения; вы должны создать один экземпляр при запуске и сохранить его.

Также, когда вы закончили использовать ProducerTemplate, вы должны вызвать метод stop (), чтобы закрыть все используемые им ресурсы.

Таким образом, в типичном веб-приложении вы не создаете ProducerTemplate для каждого запроса, например:

ProducerTemplate template = camelContext.createProducerTemplate();

Это считается плохой практикой по понятным причинам.

Вместо этого должна быть введена конечная точка, например, используя аннотацию @EndpointInject

@EndpointInject(uri = "file:{{file.inbox}}")
private ProducerTemplate inbox;

как описано здесь .

2 голосов
/ 26 октября 2011

В общем, убедитесь, что вы не создаете новый шаблон ProducerTemplate для каждого обрабатываемого сообщения.Тем не менее, создание нескольких из них на разных маршрутах / bean / процессорах также хорошо ... просто кэшируйте их для последующих запросов сообщений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...