我正在尝试在scala中实现一个方法,该方法使用Slick(在同一个DB事务中)执行几个数据库更新,然后发送几个akka消息。发送消息和数据库更新都应该是原子的。在JEE世界中,它几乎透明地发生在JMS和DB(例如JPA)参与同一事务并由JTA协调。我如何用Akka和Slick实现它。例子非常有益。
答案 0 :(得分:0)
在评论中继续讨论,因为我看到了问题的解决方案:
从执行db交互的主actor开始。例如。在消息Start
上,它使用Slick更新数据库并将Connection
保存到actor的实例varibale并向子actor发送消息。演员必须发送给您的主演员确认,例如消息ConfirmTratnsaction
。在对该消息的反应中,您对先前保存的Connection
执行提交并关闭它(或将其释放到池中)。此外,Main
演员必须监督那些儿童演员。如果该actor在发送消息后失败(或发生超时),则必须通过已保存的Connection