骆驼如何更新多个表

时间:2015-07-16 01:01:12

标签: apache-camel

我正在开发一个消息路由器,我在处理消息时需要更新多个数据库表。

当您在JMS队列中收到订单消息时,请说明经典示例,该消息包括订单标题信息,例如客户名称,订单日期等,以及订购商品的列表,例如商品名称,数量等。在这种情况下,订单标题信息将转到 ORDERS 表格,而订单商品则转到 ORDER_ITEMS 表格。

<order-header customer="John Doe" date="2015-07-21" delivery-address="John's address">
    <order-item name="Camel in action" qty="2"/>
    <order-item name="Linux cook book" qty="1"/>
</order-header>

我想到的最简单的想法是将消息路由到实际完成整个工作的bean,例如插入订单并检索订单ID,然后使用该id插入每个订单项。我相信这会起作用,但对我而言,它看起来并不像纯粹的骆驼。

我想到的另一个想法是实现起来更复杂:

  1. 从JMS端点获取消息
  2. 使用多种内容丰富的EIP
  3. 之一,使用订单ID丰富它
  4. 使用拆分器EIP将上述丰富的消息拆分为一个Order标头和多个Order订单消息(并在交换标头中保留订单ID)
  5. 使用基于内容的路由器将Order标头路由到JDBC / SQL端点,该端点知道如何将记录插入 ORDERS 表或将am order项路由到另一个知道的JDBC / SQL端点如何将记录插入 ORDER_ITEMS
  6. 这实际上看起来是一个可行的解决方案吗?我担心的是,我希望在 ORDER ORDER_ITEMS 表之间的数据库方面存在外键约束,如果由于订单项实例将以什么原因发生将会发生什么得到更快处理结束将在Order标头之前到达其JDBC / SQL端点。显然这意味着麻烦。

    您的一般意见是什么?这是否可行作为一种可行的方法。有没有办法解决我上面的测序问题。

    请注意,订单方案只是一个更好地解释我的用例的示例。实际上,要处理的消息可能比父子节点模板复杂得多,父模板插入或更新了两个以上的表。

    任何想法都会非常感激。提前感谢您的意见。

0 个答案:

没有答案