【问题标题】:Capturing camel exchange data into database将骆驼交换数据捕获到数据库中
【发布时间】:2017-06-08 01:18:37
【问题描述】:

您如何建议在 Camel 中为要保存以供审核的内容在路由中定义键/值表达式,并让它们被透明地拾取并写入数据库?

即该路由包含一个数组或一组表达式,用于保存以供审核的内容,但不知道它实际上是如何被提取并写入数据库的。

这类似于 Mule 的审计功能,您可以将 <flow> 元素放入 Mule XML 并定义表达式以保存到 Mule 的数据库以进行跟踪。

我查看了拦截器、事件通知器、跟踪器、WireTaps、MDC 日志记录 - 我确信答案在于这些元素中的一个或组合,但我不清楚。

我使用这个 Mule 审计文档中的 XML 示例作为比较:

<flow name="bizFlow">
    <tracking:custom-event event-name="Retrieved Employee" doc:name="Custom Business Event">
        <tracking:meta-data key="Employee ID" value="#[payload['ID']]"/>
        <tracking:meta-data key="Employee Email" value="#[payload['Email']]"/>
        <tracking:meta-data key="Employee Git ID" value="#[payload['GITHUB_ID']]"/>
    </tracking:custom-event>
</flow>

非常感谢

【问题讨论】:

    标签: apache-camel jbossfuse


    【解决方案1】:

    对于审计,我使用wireTap 将交换发送到特殊的audit route,在那里我可以做我需要的审计。实际上不是到 DB 而是到 JMS 队列,但这没关系。

    只有一个限制:在wireTap 之后通过主路由(两者并行运行)更改用于审计的任何内容,因此我将wireTap 之前的此类审计数据克隆到特殊的 Exchange 属性以用于审计路线。

    【讨论】:

    • 感谢您的回复 - 所以在您的情况下,您正在创建一个专用的交换属性来存储审计数据,但您仍然必须明确地将窃听添加到每个路由。我想知道是否有办法做到这一点,所以您只需创建属性而不必将窃听器放入路由中?
    • 是的,你是对的。我在需要进行审计的任何地方都添加了wireTap。这正是我从审计中所需要的——在我需要的流程点审计我需要的东西。我不确定您实际上需要审核什么以及如何审核,但每条路线tracemessageHistory 中有两个参数。我记得 messageHistory 也是一个交换属性,也可以自定义和处理。此外,我认为 Camel 中没有更多用于此目的。也许您可以创建这样的组件并与社区分享?这个怎么样? -:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多