在kubernetes中执行hazelcast任务



我有一个任务'InfoTask'。当我试图在本地hazelcast中运行它时,它可以工作

public static void main(String[] args) throws Exception {
HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance();
IExecutorService executor = hazelcastInstance.getExecutorService("exec");
for (int k = 1; k <= 1000; k++) {
Thread.sleep(1000);
System.out.println("Producing echo task: " + k);
Future<InfoHz> a = executor.submit(new InfoTask("a", "b", "c"));
a.get();
}
System.out.println("EchoTaskMain finished!");
}

但是当我试图在kubernetes中使用hazelcast执行此操作时,我得到了HazelcastSerializationException

我该如何解决这个问题?

com.hazelcast.nio.serialization.HazelcastSerializationException: java.lang.ClassNotFoundException: my.hazelcast.InfoTask

为什么在hazelcast文档中没有提到任务的序列化?

如果在类路径中没有添加jar,它是如何工作并且不抛出HazelcastSerializationException的?

包含my.hazelcast.InfoTask的代码需要在Hazelcast pod的类路径上。

有很多方法可以实现这一点,这取决于你选择如何在Kubernetes上部署。

两种方法,但还有其他方法:

  • 简单类路径:如果您使用helm之类的工具,那么volumeMounts允许您创建一个包含代码的目录。在这里,从Docker: extension - claspath -with-new-jars-or-files开始更容易理解这个概念。

  • 自定义Jar:使用jar-with-dependencies构建自己的镜像,然后它只是一个单独的镜像,配置和代码可以在而不是外部烘烤。下面是一个例子。

相关内容

  • 没有找到相关文章

最新更新