Apache Camel les producteurs et les consommateurs
J'ai des difficultés enveloppant ma tête autour de ce concept.
Je suis en train de mettre en œuvre un point de terminaison qui écoute sur un port tcp pour les messages entrants dans un format propriétaire, qui serait alors de transformer le message et ont chameau prendre plus de la transmission et de routage.
Ai-je bien compris que le Producteur est responsable de l'envoi de messages dans le Endpoint
et la Consumer
reçoit à partir de ce point de terminaison?
Lors de l'étude des interfaces, je ne pouvais pas comprendre le flux de messages entre les objets, en particulier sur la consommation de la partie. Consumer
définit seulement start()
et stop()
méthodes...
Lors de la configuration d'un test sur un squelette de mise en œuvre, Camel
invoquée createProducer()
sur l'ordinateur d'extrémité et process()
sur le producteur de l'objet. Après qu'il est rentré, swithout de faire quelque chose avec le consommateur ou le processeur associé.
Quelqu'un pourrait-il me diriger dans la bonne direction?
Vous devez vous connecter pour publier un commentaire.
Il est important de se rappeler qu'un
Endpoint
, créé par unComponent
(c'est à dire de point de Terminaison de l'Usine), peuvent s'asseoir à la soit fin d'un ChameauRoute
. Si vous mettez la Composant au début de la route, puis il doit être une mise en œuvre de laConsumer
partie de la Composant. De ce fait le travail de conversion spécifiques d'entrée/demande (comme une requête HTTP) en quelque chose de générique - un ChameauExchange
- qui peuvent voyager vers le bas un Route. Alors que si vous mettez le Composant à la fin d'un route alors vous devez avoir une mise en œuvre d'unProducer
. Le Producteur fait le travail de la prise de la Échange à partir de la fin d'un route et de le convertir en quelque chose de précis (comme un message de JMS).Je trouve le Fusible de l'ESB et de la documentation pour être mieux (en général) que le Apache Camel site web. À partir de la Fuse ESB Composant de page:
org.apache.camel.Producer
interface, les seuls contrats qu'il indique sontcreateExchange
méthodes. Et en regardant quelque chose comme laEventDrivenPollingConsumer
, la seule chose qui ne avec un Échange estprocess
il. N'est pas un Échange de voyage à travers un parcours - c'est ce que les Processeurs travailler avec, de sorte que c'était mon impression.J'ai enfin compris en regardant le Flux de la composante.
S'avère que j'ai fait l'erreur de penser le point de terminaison comme quelque chose de central thru où tout doit aller.
La réponse est simple, le consommateur reçoit des données à partir d'un système externe (à l'écoute sur une socket serveur dans mon cas) et le producteur envoie les données au système externe.
Depuis mon point de terminaison est en lecture seule (il ne sera pas utilisé en tant que la destination finale de Chameau processus de routage), je n'ai vraiment pas besoin d'un producteur (il doit lancer une RuntimeException si le système tente encore de le faire en raison d'une mauvaise configuration). Un exemple d'adaptation serait le chameau-atome d'un point d'extrémité, vous pouvez lire des aliments mais (comme d'1.6.0) vous ne pouvez pas publier un.
De même, vous avez seulement besoin d'un producteur pour un seul point de terminaison qui ne reçoit pas de données à partir d'un système externe (e.g enregistrement).
Un Producteur s'étend Processeur qui signifie qu'il a une méthode de traitement ainsi.
Découvrez gratuitement le chapitre 1 dans le Chameau dans l'Action du livre qui en dit un peu sur ceux de Chameau concepts.
http://www.manning.com/ibsen/
Et ce tutoriel est aussi excellent car il introduit ces concepts dans un rythme régulier
http://camel.apache.org/tutorial-example-reportincident.html