我有一个 akka 应用程序,我应该保护我的线程不被阻塞。因此,阻塞操作应该在单独的专用线程池中执行。访问(Put/Get)hazelcast 的 IMap 是这些阻塞操作之一(据我所知,hazelcast 没有反应式 Java 客户端)。在 hazelcast-java-client 文档中,我不清楚如何将 hazelcast-client 的线程与应用程序的其他线程分开。所以我的问题是:
Hazelcast Java 客户端的文档在这里。 https://docs.hazelcast.com/imdg/latest/clients/java#client-system-properties 您可以更改线程数等。
但在此之前,我会首先使用 IMap 的 async 方法。它提供了很多异步方法,例如
CompletionStage<V> getAsync(@Nonnull K key);
CompletionStage<V> putAsync(@Nonnull K key, @Nonnull V value);
CompletionStage<Void> putAllAsync(@Nonnull Map<? extends K, ? extends V> map);
CompletionStage<Void> setAsync(@Nonnull K key, @Nonnull V value);
...
这些方法返回一个CompletionStage,这样你的akka代码就不需要阻塞。