Вопрос

Мне трудно осознать эту концепцию.

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

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

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

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

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

Это было полезно?

Решение 2

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

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

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

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

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

Другие советы

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

Я считаю, что документация Fuse ESB лучше (в целом), чем документация Веб-сайт Apache Camel.Из Страница компонента предохранителя ESB:

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

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


enter image description here

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top