我花了很多时间来弄清楚我原本运行良好的项目的交易ZIO+HTTP4S+Doobie
。如何进行适当的 [声明性] 事务管理?类似 Spring 的东西@Transactional
。我从-transactional-to-type-safe-reasonable-transactions阅读了这篇非常好的帖子,但具有讽刺意味的是,它确实有所谓的 Spring 挑战,即混淆交易的精确处理方式/位置:)
还尝试了tranzactio,甚至输入了一个问题在问题下,我的 PR(在我的 fork 上)似乎表明单个transact
调用被分组在一个事务中?!
在 ZIO 引用列表中的 bootzooka中,我不明白为什么资源在 main 中只“使用”一次,然后transact
围绕逻辑被调用。好吧,我理解它为什么起作用,但是当第一个 ZIO-effekt 中的错误可以让我控制第二个平面映射效果发生的情况时,我没有看到任何“策略”或其他任何让我处理的东西......
或者如何确保 HTTP4S 请求会发生单个事务。
或者一个错误处理程序,它@RequiresNew
可以在数据库中的某处实际存储有关错误的信息,即使所有先前的逻辑都正确回滚。
我不介意写一些关于这个的东西来帮助别人,但我显然还有更多要学的东西。关于 Doobie 和 ZLayers 等等。
如果我在这里明显遗漏了什么,请告诉我:-)