【问题标题】:Mule :Inbound connector consuming only if a business requirement is metMule:仅在满足业务需求时才使用入站连接器
【发布时间】:2018-04-08 17:35:22
【问题描述】:

我在 mule 服务中有这个要求,只有当业务条件成立时,它才应该从入站连接器(流消息源)消费。我需要查看数据库该条件是否成立,然后只有我的入站连接器应该开始消费。每次它应该检查该条件并仅在条件为真时消费。建议在 mule 中实现实施的最佳方法。

【问题讨论】:

    标签: mule mule-studio mule-component


    【解决方案1】:

    虽然消息过滤器在理论上是正确的,但实际上这通常是使用Database Connector 和 SELECT 查询来完成的,该查询确定应在其 WHERE 子句中处理哪些行。您可以将查询放在流开头的<poll></poll> 元素中,以按计划执行查询,如second example here 中所示。

    【讨论】:

    • 感谢您的回复。我正在使用 Poll 范围,并且我的消费者只有在选择查询返回一行时才应该使用。但是轮询器下一次应该只在数据库中满足另一个条件时轮询,即可变频率轮询器,并且这也是在运行时决定的。如何配置我的轮询器以在运行时决定轮询频率?
    【解决方案2】:

    如果不查看您的流程您想要实现的确切内容,这很难说.. 通常,如果您希望您的入站端点消费并且流程工作,最好的选择是放置一个 消息过滤器 在 入站端点 之后,它将检查条件并允许 消息 传递到 下一个处理器..

    由于您想从数据库中检查条件,您需要在入站端点之后放置一个数据库组件,该端点将从数据库中获取业务条件的值,然后您可以放置​​ 消息过滤器选择路由器消息负载传递给下一个Mule组件

    【讨论】:

      【解决方案3】:

      这通常使用message filter integration pattern 完成。

      这个模式在 Mule 中被实现为(并且仅作为)过滤器,其他可以解决问题的模式,特别是路由器和绕道,但更一致的方式是使用过滤器。

      在 Mule 的情况下,您有许多过滤器,但是没有现成的基于 sql 查询的过滤器。这说。您有多种选择:

      • java 中的Filter,您可以将其实例化为注入数据源的spring bean,然后用作带有ar ref 的custom filter
      • 如果这意味着可重用,则作为DevKit 模块实现。
      • 作为一种解决方法,实现一个子流程,该流程利用数据库连接器来获取查询结果,然后在流程结束时使用表达式过滤器过滤或不过滤。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-01-22
        • 2018-09-24
        • 1970-01-01
        • 2021-08-25
        • 2021-12-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多