2011-11-01 2 views
1

J'essaie de laisser un fichier de propriétés externe décider de la météo ou non un certain flux (et son point de terminaison entrant) doit être actif ou non.Filtrer par placeholder de propriété

Actuellement, j'essaie d'obtenir ceci pour un flux avec un générateur d'événements à quartz - et je veux utiliser un évaluateur d'expression personnalisé pour arrêter le flux s'il doit être actif (comme défini dans le fichier de propriétés), mais je obtenir une erreur xml en procédant ainsi: Une erreur irrécupérable s'est produite lors de l'exécution du serveur: cvc-complex-type.3.2.2: l'attribut 'custom-evaluator' n'est pas autorisé à apparaître dans l'élément 'expression-filter'. (org.xml.sax.SAXParseException).

et c'est le code correspondant: (je cours ceci sur Eclipse avec Mule IDE) <expression-filter evaluator="custom" custom-evaluator="IsActiveEvaulator" expression="${chFlow.isActive}"/>

Plusieurs questions au sujet de cette 1) Pourquoi cette erreur se passe? J'ai copié la ligne directement hors du tutoriel du site. 2) Existe-t-il un évaluateur d'expressions par défaut qui pourrait filtrer en fonction de l'espace réservé de la propriété? 3) Comment irais-je sur ce type de filtre avec un débit qui n'a pas commencé avec un générateur d'événements à quartz. ce qui signifie, comment j'arrêterais un certain flux (et ses points de terminaison) de travailler en fonction d'une propriété d'espace réservé.

Merci d'avance!

Répondre

1

1) Vous être mordu par a bug :(

2) Je vous suggère de créer un grain de contrôle (disons abcDynamicFlowController), le configurer avec le printemps pour injecter la valeur d'espace réservé en elle, exposer la valeur d'espace réservé comme "isWhateverFlowActive". Créez ensuite un intercepting message processor personnalisé et placez-le dans votre flux après le point de terminaison entrant en tant que "processeur de message personnalisé". Injectez votre bean de contrôle dans ce processeur de messages et utilisez la valeur appropriée pour décider si l'événement doit être traité ou abandonné.

3) Un processeur d'interception de messages le fera pour vous. Si vous exposez également votre bean de contrôle sur JMX, vous pourrez contrôler son état initial à partir d'un fichier de propriétés, puis modifier son état lors de l'exécution.

+0

Comment utiliser l'évaluateur de registre? Je ne vois rien à ce sujet en ligne. J'ai créé et injecté le haricot. – Menyh

+0

Aussi, je ne vois pas comment je pourrais utiliser cette méthode afin de configurer la météo d'un certain flux fonctionne. Ce qui signifie que je veux être en mesure d'utiliser les propriétés déposées afin de déterminer la météo d'un certain point de terminaison est créé ou non. – Menyh

+0

J'ai passé en revue ma réponse pour proposer une alternative basée sur le support de processeur de message d'interception de Mule. Aussi, je n'ai pas obtenu de votre question initiale que vous vouliez créer des points de terminaison ou non. Je pensais que vous vouliez laisser tomber les messages dans un flux basé sur une logique de contrôle. Si vous souhaitez créer dynamiquement des points de terminaison/flux, consultez https://github.com/mulesoft/mule-dsl –