Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Lagom中读取端处理器上的事件处理_Java_Lagom - Fatal编程技术网

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

Java Lagom中读取端处理器上的事件处理,java,lagom,Java,Lagom,我有一个概念上的疑问。我知道特定实体的事件是在读取端按顺序处理的,但我认为下一个事件的处理不会等到上一个事件成功处理并更新数据库 我说得对吗?如果我是,那么有没有办法强制只有在成功处理以前的事件并更新读取端数据库时,才在读取端处理事件?通常Lagom会一次处理一个事件,每个事件标记。不应该出现在成功提交前一个事件之前就开始处理下一个事件的情况 唯一的例外是,如果在事件处理程序中显式执行异步操作。如果您这样做,您将需要专门处理这个问题,以确保事件的处理等待该操作完成。具体取决于您使用的读取端类型

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

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

通常Lagom会一次处理一个事件,每个事件标记。不应该出现在成功提交前一个事件之前就开始处理下一个事件的情况

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

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

JDBC和JPA读取端API期望您的事件处理程序是同步的和阻塞的,并在专用的执行上下文中执行代码来解释这一点。如果您从JDBC/JPA事件处理程序调用异步操作,您还应该显式地阻止它们,直到它们完成