Подтвердить что ты не робот

Производители и потребители Apache Camel

У меня есть трудности, обволакивающие мою концепцию.

Я пытаюсь реализовать конечную точку, которая прослушивает порт tcp для входящих сообщений в проприетарном формате, который затем преобразует сообщение и верблюд берет на себя переадресацию и маршрутизацию.

Правильно ли я понял, что производитель отвечает за отправку сообщений в Endpoint, а Consumer получает их от этой конечной точки?

При изучении интерфейсов я не мог понять поток сообщений между этими объектами, особенно на потребительской части. Consumer определяет только методы start() и stop()...

При настройке теста на реализацию скелета Camel вызывается createProducer() в конечной точке и process() для объекта-производителя. После этого он вернулся, без каких-либо действий с потребителем или связанным с ним процессором.

Может ли кто-нибудь указать мне в правильном направлении?

4b9b3361

Ответ 1

Я, наконец, понял это, посмотрев на компонент Stream.

Оказывается, я допустил ошибку, думая о конечной точке как о чем-то центральном, через что все должно идти.

Простым ответом является то, что потребитель получает данные от внешней системы (слушая в ящике сервера в моем случае), и производитель отправляет данные во внешнюю систему.

Поскольку моя конечная точка доступна только для чтения (она не будет использоваться в качестве конечного пункта назначения процесса маршрутизации Camel), мне действительно не нужен производитель (он должен вызывать исключение RuntimeException, если система все еще пытается это сделать из-за неправильной конфигурации). Примером может служить конечная точка верблюда-атома - вы можете читать каналы, но (начиная с версии 1.6.0) вы не можете опубликовать ее.

Аналогично, вам нужен только производитель для конечной точки только для записи, которая не получает данные из внешней системы (например, протоколирование).

Ответ 2

Важно помнить, что Endpoint, созданный Component (т.е. конечная точка Factory), может сидеть на обоих концах Camel Route. Если вы поместите компонент в начало маршрута, тогда должна быть реализация части Consumer компонента. Это делает работу по преобразованию конкретного ввода/запроса (например, HTTP-запроса) во что-то общее - Camel Exchange -, который может перемещаться по Маршруту. Если вы поместите компонент в конец маршрута, то вы должны иметь реализацию Producer. Продюсер выполняет работу по переносу Exchange с конца маршрута и превращает его в нечто конкретное (например, сообщение JMS).

Я считаю, что документация Fuse ESB лучше (в общем), чем веб-сайт Apache Camel. На странице Предохранитель ESB:

Конечные точки потребителей потребляют запросы. Они всегда появляются в начале маршрута, и они инкапсулируют код, ответственный за получение входящих запросов и отправки исходящих ответов.

Конечные точки производителя создают запросы. Они всегда появляются в конце маршрут и они инкапсулируют код, ответственный за диспетчеризацию исходящих запросов и получения входящих ответов.


enter image description here

Ответ 3

A Производитель расширяет процессор, что означает, что он также имеет метод обработки.

Ознакомьтесь с бесплатной главой 1 в книге "Верблюд в действии", в которой рассказывается немного о тех концепциях Верблюда. http://www.manning.com/ibsen/

И этот учебник также превосходный, поскольку он вводит эти концепции в устойчивый темп http://camel.apache.org/tutorial-example-reportincident.html