I know the java DynamoDB's SDK is considered async non blocking but my question is:
Q. Does the dynamo update still need to be on another thread with operator publishOn to be safer in a reactive context?
Mono.fromFuture(table.update()).publishOn();
Assuming that you are using the AWS Java SDK v2, you don't need to worry about delegating to a thread pool. AWS SDK already makes sure that you don't block an important thread. See documentation for details:
Actually, it even use more threads than it would be desired in a truly reactive application. Fortunately, the SDK also gives option to opt out of that behavior if needed.
One more thing that's good to be aware of is
CompletableFuture
is eager unlike reactive typeMono
. For this reason it is better to use the lambda version of thefromFuture
method: