Question

Tout d'abord merci à des gens qui sont actuellement impliqués dans le développement de Camel, je suis reconnaissant pour tout le travail qu'ils ont mis en.

Je cherche des conseils de conception.

L'architecture est quelque chose comme ceci: J'ai un tas de classes Java qui, lorsque instancié sont nécessaires pour se connecter les uns aux autres et d'envoyer des messages en utilisant Apache Camel. Les contraintes de conception me demandent de créer un cadre tel que toutes les informations de routage, les producteurs, les consommateurs, etc. terminaux devraient être une partie du chameau context.xml.

Un individu doit avoir la possibilité de modifier un tel fichier et changer complètement la route existante sans avoir le code Java disponible pour lui. (Le code Java ne serait pas fourni, seul le pot compilé serait)

Par exemple, dans une configuration, Bean A -.> Bean B> Bean C> Fichier-> email en autre Bean B> Bean A> Bean C> ftpcode> Fichier-> email Nous avons essayé différentes approché, mais si le grain d'origine ne sont pas mis en œuvre en tant que Java DSL, le taux de messages est très élevé, car le chameau fait constamment appel à Bean A dans le premier exemple et Bean B dans la seconde (ils étant la source).

Bean A et B Bean proviennent des messages et sont événementielles. Au cas où l'événement se produit requis, les haricots envoient un message de notification.

Mes transformations sont très simples et je ne nécessitent pas la puissance de Java DSL du tout. Pour résumer, j'ai les questions suivantes:

1) Compte tenu des contraintes ci-dessus, je dois-je assurer toutes les informations de routage, y compris les adresses de destination, tout est une partie du fichier de contexte de chameau?

2) Y at-il par exemple, je peux regarder pour garder les informations de routage complètement indépendant du code java?

3) Comment puis-je assurer Camel ne pas constamment Invoke la fève d'origine?

4) Est-ce que Camel constamment juste le invoque haricot d'origine ou un bean envoie des messages et à quelle que soit la position du haricot dans la file d'attente de toute messagerie?

J'ai à court d'options à essayer différentes façons de configurer cela. Toute aide serait appréciée.

Était-ce utile?

La solution

Lire sur le masquage middleware sur les pages de wiki Camel. Cela vous permet de laisser les clients utilisent une interface pour envoyer / recevoir des messages mais totalement inconscients de Camel (pas API Camel tout utilisé).

Mieux encore envisager d'acheter le chameau dans le livre d'action et lisez le chapitre 14 qui parle à ce sujet. http://www.manning.com/ibsen/

Enregistrer 41% sur les livres Manning: Camel en action ou ActiveMQ en action. Utilisez le code s2941. Expire le 6 octobre http://www.manning.com/ibsen/

Autres conseils

Si vous envisagez d'utiliser ServiceMix de FuseESB, vous pourriez vouloir séparer vos routes en deux parties.

La première partie serait le haricot pilote de l'événement qui déclenchent la route. Il pourrait pousser des messages au ServiceNMR (voir http://camel.apache.org/nmr.html).

L'autre partie sera laissée aux utilisateurs du cadre, en utilisant DSL Spring. Il suffit d'écouter un message sur la RMN (par poussée l'autre voie) et faire tout ce qu'ils veulent.

définition du critère d'évaluation du cours pourrait être propertized en utilisant le service de configuration ServiceMix (voir http: // chameau .apache.org / properties.html # Propriétés-UsingBlueprintpropertyplaceholderwithCamelroutes )

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top