【问题标题】:Dynamic query as Inbound connections to MULE动态查询作为到 MULE 的入站连接
【发布时间】:2023-11-05 15:01:01
【问题描述】:

我正在尝试创建到我的 Mule 服务器的 SQL 查询入站连接,但我希望查询本身是动态的(这意味着我想添加一个值,例如:SELECT * FROM SOME_TABLE WHERE TimeStamp > SomeDynamicVariable)。

考虑到我想经常轮询数据库,我将如何创建这样的入站连接?

【问题讨论】:

    标签: esb mule


    【解决方案1】:

    在 Mule 中,您想要实现的称为“请求”(即使用自定义表达式使用端点),并且不使用入站端点处理。

    要实现您的目标,您需要:

    • 使用 Mule 表达式作为时间戳值的全局 JDBC 端点,例如:

      <jdbc:query key="myQuery" value="SELECT * FROM SOME_TABLE WHERE TimeStamp > #[payload]"/>
      
    • 一个Quartz inbound endpoint to generate an event在有效载荷中包含要在查询中使用的时间戳,

    • message enricher 从端点请求并在当前有效负载中设置结果值(目标 = #[有效负载])。

    D.

    【讨论】:

    • 感谢您的回复。我正在查看您的链接,但在我的理解中仍然缺少一些东西。我想在每个事件中更改时间戳(在选择查询中使用),我如何将动态时间戳合并到 quertz 事件生成器中?跨度>
    • 我会尝试更好地解释自己,是否可以使用浓缩器来处理生成器的有效负载?我可以看看某种示例(甚至有些不同)吗?因为我在理解(和编写)这个流程时遇到了一些问题。
    • 我明白你的意思:看来你需要在 Quartz 入站端点之后使用一个转换器,以便将有效负载设置为你想要的时间戳。
    • 关于时间戳值,它始终是当前系统时间戳还是您严格控制的值?如果是后者,我的上述建议适用,但如果是前者,您可能可以通过直接在标准入站 JDBC 端点中使用表达式来获得一种更简单的解决方案,例如:#[function:datesamp:dd-MM-yyyy HH: mm:ss]
    最近更新 更多