我正在开发一个消息路由器,我在处理消息时需要更新多个数据库表。
当您在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插入每个订单项。我相信这会起作用,但对我而言,它看起来并不像纯粹的骆驼。
我想到的另一个想法是实现起来更复杂:
这实际上看起来是一个可行的解决方案吗?我担心的是,我希望在 ORDER 和 ORDER_ITEMS 表之间的数据库方面存在外键约束,如果由于订单项实例将以什么原因发生将会发生什么得到更快处理结束将在Order标头之前到达其JDBC / SQL端点。显然这意味着麻烦。
您的一般意见是什么?这是否可行作为一种可行的方法。有没有办法解决我上面的测序问题。
请注意,订单方案只是一个更好地解释我的用例的示例。实际上,要处理的消息可能比父子节点模板复杂得多,父模板插入或更新了两个以上的表。
任何想法都会非常感激。提前感谢您的意见。