使用java实现两个Kerberos kafka集群之间的消息同步,需要加载: System.setProperty("java.security.krb5.conf", KRB5_CONFIG); System.setProperty("java.security.auth.login.config", KAFKA_JAAS_CONF); 而生产者和消费者API的系统环境属于不同集群环境,在同一个jar程序中会造成系统配置加载冲突。 请问,有没有好的解决方式?
已解决方案: 将consumer和producer分离: 消费者程序先获取源topic数据通过CloseableHttpClient发送端口; 生产者程序在获取端口程序生产到目标topic。
缺点:这种方案需要维护两套程序,是code 维护冗余; 如果网络波动,会导致数据丢失。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
面对您提到的问题,确实存在一定的挑战性,尤其是在处理跨Kerberos安全认证的Kafka集群间消息同步时。不过,除了您已提出的解决方案之外,还有其他一些策略可以考虑以减少代码冗余和提高数据传输的可靠性:
java.security.krb5.conf
和java.security.auth.login.config
配置文件,避免冲突。每种方案都有其适用场景和优缺点,选择时需权衡项目需求、团队技术栈、运维成本等因素。希望这些建议能对您有所帮助!