kafka java安装出现的问题

本文介绍了解决Kafka消息发送异常的方法。当在云服务器上安装Kafka并尝试从本地Java代码发送消息时,可能会遇到发送失败的问题。文章详细解释了如何通过正确配置advertised.host.name属性来解决这一问题。

发送消息异常

在云服务器上安装的kafka服务器,在本地java代码访问时,发不出消息,也获取不到数据。

发送消息时会抛出异常:

Exception in thread "main" Failed to send requests for topics test with correlation ids in [0,12]
kafka.common.FailedToSendMessageException: Failed to send messages after 3 tries.

通过查看kafka配置,发现有个属性:advertised.host.name。官方文档里的备注信息表明,该字段的值是生产者和消费者使用的。如果没有设置,则会取host.name的值,默认情况下,该值为localhost。思考一下,如果生产者拿到localhost这个值,只往本地发消息,必然会报错(因为本地没有kafka服务器)。

在kafka的config下的servier.properties里面配置属性advertised.host.name设置为服务器IP地址,经测试,消息顺利发送。

在配置生产者时,metadata.broker.list会设置成kafka服务器的IP和地址。但这个只是获取一些元信息,后续发送消息时会根据获取的元信息来发送,而获取得元信息中,由于advertised.host.name被默认为localhost,所以本地当然会把消息发到本地,结果导致问题出现。


错误: 找不到或无法加载主类 Files\Java\jdk1.8.0_101\lib\dt.jar;C:\Program]


java环境由JRE换成JDK的话,需要修改kafka_2.12-1.0.0\bin\windows\kafka-run-class.bat文件。

具体修改内容是,将:

set COMMAND=%JAVA% %KAFKA_HEAP_OPTS% %KAFKA_JVM_PERFORMANCE_OPTS% %KAFKA_JMX_OPTS% %KAFKA_LOG4J_OPTS% -cp %CLASSPATH% %KAFKA_OPTS% %

改为:set COMMAND=%JAVA% %KAFKA_HEAP_OPTS% %KAFKA_JVM_PERFORMANCE_OPTS% %KAFKA_JMX_OPTS% %KAFKA_LOG4J_OPTS% -cp "%CLASSPATH%" %KAFKA_OPTS% %

%CLASSPATH%要用双引号。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值