【问题标题】:Filter by property placeholder按属性占位符过滤
【发布时间】:2011-11-07 01:28:53
【问题描述】:

我正在尝试让外部属性文件决定天气或某个流(以及它的入站端点)是否应该处于活动状态。

目前,我正在尝试使用石英事件生成器为流程实现这一点 - 如果流程应该处于活动状态(如从属性文件中定义),我想使用自定义表达式评估器来停止流程,但我得到执行此操作时出现 xml 错误: 服务器运行时发生致命错误:cvc-complex-type.3.2.2:属性“custom-evaluator”不允许出现在元素“表达式过滤器”中。 (org.xml.sax.SAXParseException)。

这是相关代码:(我在 Eclipse 上使用 Mule IDE 运行它) <expression-filter evaluator="custom" custom-evaluator="IsActiveEvaulator" expression="${chFlow.isActive}"/>

关于这个的几个问题 1)为什么会发生这个错误?我直接从网站的教程中复制了这条线。 2) 是否有可以根据属性占位符进行过滤的默认表达式评估器? 3)我将如何处理这种类型的过滤器,其流程不是从石英事件生成器开始的。意思是,我将如何根据占位符属性阻止某个流(及其端点)工作。

提前致谢!

【问题讨论】:

    标签: esb mule


    【解决方案1】:

    1) 你被a bug咬了:(

    2) 我建议您创建一个控制 bean(例如 a.b.c.DynamicFlowController),使用 Spring 对其进行配置以在其中注入占位符值,将占位符值公开为“isWhateverFlowActive”。然后创建一个自定义intercepting message processor 并将其作为“自定义消息处理器”放置在入站端点之后的流中。在此消息处理器中注入您的控制 bean,并使用相关值来决定是否必须处理或放弃事件。

    3) 一个拦截消息处理器会为你做这件事。如果您还通过 JMX 公开您的控制 bean,您将能够从属性文件控制其初始状态,然后在运行时更改其状态。

    【讨论】:

    • 我将如何使用注册表评估器?无法在网上看到任何有关它的信息。我创建并注入了 bean。
    • 另外,我不明白如何使用这种方法来配置天气某个流程的工作。这意味着我希望能够使用属性字段来确定是否创建了某个端点。
    • 我已经查看了我的答案,以提出基于 Mule 拦截消息处理器支持的替代方案。另外,我没有从您是否要创建端点的原始问题中得到答案。我以为您想根据某些控制逻辑将消息放入流中。如果您想动态创建端点/流,请查看github.com/mulesoft/mule-dsl
    • 我知道我会再次问同样的问题。但是我将如何将控制 bean 暴露给 JXM?
    • 我浏览了 mule-dsl 指南,虽然我看到了动态创建流程,但我真正在寻找的是某种调用全局流程的方法。在骡子??
    猜你喜欢
    • 2017-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    相关资源
    最近更新 更多