【问题标题】:Ensure transaction is complete for multiple REST calls确保多个 REST 调用的事务完成
【发布时间】:2016-08-25 00:34:58
【问题描述】:

我们公开 REST 服务,这些服务可以公开 POST、PUT、GET 和 DELETE 操作。消费者通常以这样一种方式设计 UI,即用户只需单击即可创建、更新和删除。如果他们向我们发送了三个 PUT POST 和 DELETE 调用,那么其中一个可能会失败并导致数据不一致。 目前我们创建了一个包装服务,允许他们调用一个调用所有三个操作的服务,并且我们保证一个带有 JBOSS 事务控制的事务,所以如果一个操作失败,那么所有事务都会回滚。

有没有更好的处理方法,可以帮助我们避免创建这些包装服务?

【问题讨论】:

    标签: rest jboss transactions


    【解决方案1】:

    简短回答:不,没有。

    您正在为您的 REST 服务寻找“事务”支持。有很多在线材料(虽然没有开箱即用的解决方案),包括这个确切的问题:Transactions in REST?

    我认为重要的是要注意事务的概念与无状态分布式系统的概念有些冲突。有些人致力于将事务放入 REST(https://www.atomikos.com/Blog/TransactionsForTheRESTOfUshttp://www.jboss.org/reststar/specifications/transactions.html),但一般来说,解决方案是以不需要分布式事务的方式设计系统。

    在大多数情况下,将 DB 记录操作直接导出为 CRUD 操作是罪魁祸首。如果您这样做,只需尝试提出对客户具有实际意义的资源,您会发现大部分问题都消失了。

    作为旁注,在为金融机构工作时,需要将资金从一个帐户转移到另一个帐户的经典示例过于简单化了。它在现实生活中不是这样工作的,而且很多(包括某些形式的实际汇款)在这个意义上不是交易性的。

    【讨论】:

      猜你喜欢
      • 2016-12-09
      • 2018-08-25
      • 1970-01-01
      • 2012-07-07
      • 2013-12-11
      • 1970-01-01
      • 1970-01-01
      • 2018-09-29
      • 1970-01-01
      相关资源
      最近更新 更多