具有不可序列化事件处理程序的 Hazelcast Jet Kafka

Hazelcast Jet Kafka with not serializable event handler

我想在我的应用程序中使用 hazelcast-jet-kafka,因为在我的情况下,kafka 分区的数量是有限的。我如何理解 jet-kafka 并行性不依赖于 kafka 分区,如果能找到关于 jet-kafka 如何实现 kafka 分区数量的独立性的解释就好了。

但我的问题是,当我的事件处理程序无法序列化时,我如何处理 jet 中的事件。 例如,我找到了一个解决方案——使用地图接收器并将本地事件侦听器添加到该地图, 但对我来说,这似乎是一个拐杖,因为我不需要将这些事件存储在地图中。在这种方案中可以将地图大小设置为零吗?

此外,我在文档中看到了新型接收器 - 可观察,这似乎是我想要的,但可观察监听器无法仅获取本地条目,对我来说,它不合适。

您能帮忙找到合适的解决方案吗?或者 hazelcast-jet-kafka 在这种情况下不是一个好的选择?

it would be nice to find explanations of how jet-kafka achieve independence of the number of kafka partitions.

一个Jet线程可以处理任意数量的分区,所以很容易实现这种独立性。 Jet 只是在所有 Kafka 连接器线程之间公平地分配所有分区。

But my question is how I can handle events in jet when my event handler could not be serializable.

Hazelcast Jet 不要求您的事件处理程序是可序列化的。如果你需要一个有状态的处理程序,你必须提供一个创建状态对象的函数。函数必须是可序列化的,但状态不一定是。如果你只是想要一个无状态的映射函数,它必须是可序列化的,但通常这没有问题。

如果您收到一个错误,指出某个函数不可序列化,这可能是由于在 lambda 中捕获比您实际需要的更多状态的常见陷阱。在这种情况下,您应该显示您的代码。