在Lagom中处理读取端处理器上的事件

时间:2017-12-29 01:40:44

标签: java lagom

我有一个概念上的怀疑。我知道特定实体的事件在读取端按顺序处理,但我认为下一个事件的处理不会等到上一个事件成功处理并且数据库更新。

我是对的吗?如果我是,那么有没有办法强制只在先前的事件被成功处理并且读取端数据库更新时才在读取端处理事件?

1 个答案:

答案 0 :(得分:1)

通常,Lagom 将按事件标记一次处理一个事件。不应该存在下一个事件的处理在前一个事件成功提交之前开始的情况。

唯一的例外是,如果在事件处理程序中显式执行异步操作。如果这样做,您将需要专门处理此事件以确保事件处理等待该操作完成。具体取决于您使用的读取方式类型。

Cassandra读取API期望事件处理程序返回CompletionStage<List<BoundStatement>>。您需要确保此完成阶段仅在事件处理器调用的所有异步操作完成后才完成。 CompletionStageCompletableFuture API提供了各种方法来组合和排序多个异步操作。

JDBC和JPA读取API期望事件处理程序是同步和阻塞的,并在专用执行上下文中执行代码以解决此问题。如果从JDBC / JPA事件处理程序调用异步操作,则还应明确阻止它们完成。

相关问题