我有两个带有版本0.8.2.1
和0.10.1
的Kafka群集。
我想消耗0.8.2.1
的一些事件,并将其他事件产生到0.10.1
。我一直在阅读有关向后兼容性的信息,并了解客户是向前兼容的。我找不到对0.8.2.1
生产的任何引用。是否有可能使用单个客户端并与群集进行通信。
我可以在同一Java代码中使用两个客户端吗?我正在使用Maven作为我的构建工具。
如果要读/写入两个具有不同版本的kafka群集,则可以使用与较低版本相对应的客户端。
例如,如果您从0.8.2阅读并写入0.10.1,则可以使用0.8.2消费者和0.8.2生产者,因为0.8.2生产者与0.10.1。
为客户使用任何更高版本是不起作用的,因为您的版本高于0.8.2的消费者无法从0.8.2读取(即使0.9或0.10.1生产商也能够写入0.10.1群集)。
重点是,您不能轻松地将0.8.2消费者和0.10.1生产者放入同一应用程序,因为会有类加载冲突。这不是不可能的想法,但是您需要使用不同的类加载程序为消费者和生产商隔离代码的两个部分,以避免班级加载冲突。写了写,它可以让您使用0.8.2消费者从0.8.2群集读取,同时使用0.10.1生产者写入0.10.1群集。
但是,如果您不需要任何特殊功能0.10.1制作人提供的报价,那么对于消费者和生产商来说,使用0.8.2似乎更容易,避免使用麻烦来处理不同的类加载程序。自定义类加载程序看起来更棘手。