【问题标题】:how to get a user confirmation in the middle of a transaction?如何在交易过程中获得用户确认?
【发布时间】:2015-11-28 11:31:56
【问题描述】:

我一直致力于交易服务,它被用作核心银行项目的一部分。在许多服务中,在我的数据库中插入任何记录之前,我应该对记录运行几次验证。编辑数据库中已经存在的记录也是如此。 但有时为了更新指定表中的记录,我们应该更改与指定表相关的其他表中的记录。因此,我们需要用户确认来更改其他表上的记录。但问题是我不知道在服务器中运行事务时如何在客户端获得用户确认。是否可以通过rabbitMq在客户端和服务器之间发送消息来解决这个问题? 如果有人使用透明样本解释任何解决方案,我将不胜感激。

【问题讨论】:

    标签: java spring transactions client-server rabbitmq


    【解决方案1】:

    当我需要实现它时,我会以其他方式来实现(我不知道这是否适用于您的场景)。

    • 我会先让用户输入他的数据,
    • 然后我会尝试运行并检查需要哪些额外确认我还会保存(在用户会话中)在尝试运行时确定的所有相关约束
    • 然后我会询问用户在尝试运行时确定的其他确认
    • 然后我会进行实际运行,并使用保存的约束检查来保存同时没有任何相关更改。
    • (如果检测到 try-run 和 real-run 之间的数据有相关变化,我会道歉并再次从第 2 步开始该过程)

    但这仅在您没有太多“同时更改”时才有效

    【讨论】:

    • 亲爱的@Ralph,提前感谢您回答我的问题。尽管您建议的解决方案是解决此问题的一种方法,但我自己认为应该有另一种方法以更合适的方式解决我的问题。我不确定,但我认为最好使用 RabbitMQ 或其他消息代理系统来实现这样的事件处理程序。
    • @moha:当然还有其他解决方案,这取决于您的用例,哪一个最适合您。但请记住其他解决方案对您的交易意味着什么。因此,如果您启动一个事务,然后向用户询问一些输入(在关闭事务之前),则意味着您的数据库中的某些内容可能会被查找很长时间。 -- 同样,这取决于您的用例是否存在问题
    • 我认为您对交易的看法是正确的。我已经考虑过你所说的,我想也许我完全错了,应该改变我的分析。现在,如果我改变主意并在验证后开始交易,我可以推迟交易。我的意思是,我可以首先对更新的记录进行验证,如果我需要用户的任何确认,我可以在开始任何交易之前得到它。现在,你有什么建议?在服务器中进行一些验证后,是否有任何框架可以从客户端获得确认?
    • @moha:因为你需要实现的几乎是不可复用的业务逻辑,我不希望有一个框架可以开箱即用地解决这个问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-30
    • 2018-06-09
    • 1970-01-01
    • 2023-03-20
    • 2022-07-20
    • 2022-09-22
    • 1970-01-01
    相关资源
    最近更新 更多