【问题标题】:Insertion with two or more tables from Wso2 ESB with DSS使用 DSS 从 Wso2 ESB 插入两个或多个表
【发布时间】:2015-08-10 14:43:19
【问题描述】:

我有一个问题:-

在我的 ESB 4.7.0 中,Dss 是 3.0.1

我希望将数据可靠地插入数据库,因为我从客户端获得了一个数组列表。 我需要将该数组插入到 3 个不同的表中。每个表都给我返回生成的密钥。这将有助于插入 第二张桌子,第三张桌子的过程相同。 为此,我使用 wso2dss 在 wso2esb 中使用 3 种不同的插入操作,插入进行得很好..

@my 的问题是当我插入第二张或第三张表时,由于网络问题或任何与数据相关的问题而发生错误。 在这种情况下,我的事务可能会回滚。我已经在事务调解器中完成了,但它在序列中很有帮助。 它没有反映到任何其他序列,所以我怎么能这样做。为此,我可以使用任何类调解器或任何新事物。

【问题讨论】:

    标签: wso2 wso2esb wso2dss


    【解决方案1】:

    事务中介旨在满足原子性要求。由于您只使用插入而不涉及删除,您可以将第一个表中插入条目的主键传递给类调解器并删除,但我认为,在这种情况下,原子性不会得到保证。因此在这种情况下没有实现交易的概念。

    【讨论】:

      【解决方案2】:

      由于您使用三种不同的操作,您可以使用 DSS boxcarring 功能以及 Query Request Export 功能,使您能够以协调的方式进行交易。请参考this 了解如何使用 boxcarring 功能。它允许在 boxcarring 会话中执行的各个查询相互通信。这个概念是“导出”一个特定的结果元素,以便下一个调用查询将获得该结果元素作为查询参数。因此,如果您有两个查询,即在 boxcarring 会话中按顺序执行的“query1”和“query2”,并且如果“query1”具有特定的结果元素并且该元素以名称“foo”导出,则“ query2' 还获得一个名为 'foo' 的查询参数。所以当这个 boxcarring 会话执行时,query1 的导出值将作为输入参数传递给 query2。

      【讨论】:

      • 但是在不知道的情况下如何指定这个ID到下一个查询呢?
      【解决方案3】:

      根据您的要求,理想的解决方案是使用 Boxcarring。 Boxcarring 是一种将一组服务调用组合在一起并立即执行它们的方法。在适用的情况下,boxcarring 会话以事务方式工作,例如与 RDBMS 数据源一起使用时。 “数据服务托管”功能通过在服务器端对服务调用进行分组来促进 boxcarring。因此,不需要特殊的服务客户端,并且像往常一样,可以对服务器进行连续的服务调用以参与 boxcarring 会话。

      要使 boxcarring 起作用,必须使用支持会话管理的传输,例如 HTTP。服务客户端还应该通过在服务器发送时返回会话 cookie 来支持会话管理。 Axis2 服务客户端完全支持会话管理。

      请在 boxcarring 上找到 WSO2 original documentationthis useful blog post,它们会逐步说明如何使用 boxcarring。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-29
        • 1970-01-01
        相关资源
        最近更新 更多