Kafka Streams:转发到主题后清除对象
Kafka Streams: Clearing objects after forward to topic
我们假设该值是一个字符串或一个 class 对象。
context.forward(key, value, topic);
在上面一行之后,我们可以做下面的事情吗?如果记录在生产者缓冲区中,它们是否都会作为 null 发布到主题?
value = null;
没关系,因为你传递了参考资料。如果 value
是基本类型(这 API 不可能),值将被复制也很好。
可能会导致问题的是,如果您 修改 传递的对象(尽管无法使用 String
类型)。假设,它是一个 POJO 类型,并且您在 context.forward
之后调用了一个 set()
—— 因为下游节点可能仍然使用传入的引用,调用 set()
将修改之前转发的 POJO。这可能会导致问题。
我们假设该值是一个字符串或一个 class 对象。
context.forward(key, value, topic);
在上面一行之后,我们可以做下面的事情吗?如果记录在生产者缓冲区中,它们是否都会作为 null 发布到主题?
value = null;
没关系,因为你传递了参考资料。如果 value
是基本类型(这 API 不可能),值将被复制也很好。
可能会导致问题的是,如果您 修改 传递的对象(尽管无法使用 String
类型)。假设,它是一个 POJO 类型,并且您在 context.forward
之后调用了一个 set()
—— 因为下游节点可能仍然使用传入的引用,调用 set()
将修改之前转发的 POJO。这可能会导致问题。