Spring Cloud stream 使用Kafka踩坑记录

今天在使用spring cloud整合消息队列时,遇到个问题。本机虚拟机上部署了一套kafka集群  zookeeper集群也部署在同台虚拟机上

在虚拟机内使用kafka-console-producer.sh、kafka-console-consumer.sh 创建广播方、消费方能正常的收发消息。

但是在本机物理机上使用sping cloud 时就始终无法发送消息到kafka上去

pom文件

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-stream</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-stream-binder-kafka</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

yml配置文件

server:
  port: 8050
spring:
  application:
    name: cloud-kafka-provider
  cloud:
    stream:
      default:
        binder: kafka
        producer:
          useNativeEncoding: true
      default-binder: kafka
      kafka:
        binder:
          brokers: 192.168.126.129:9090,192.168.126.129:9091,192.168.126.129:9092
          zk-nodes: 192.168.126.129:2181,192.168.126.129:2182,192.168.126.129:2183

消息发送代码:

@EnableBinding
public class DefaultProviderService {

    @Autowired
    private BinderAwareChannelResolver resolver;

    public void sendMsg(String msg, String topic) {
        resolver.resolveDestination(topic).send(new GenericMessage<>(msg.getBytes()));
    }
}
 

 

错误信息

Exception thrown when sending a message with key='null' and payload=***** to topic

 

之前一直未能发现问题的所作,后来在查看其他网友博客的时候看到他降低日志级别解决了他的问题。我也将项目日志级别降低到debug模式

发现原来一直在报错  一直提示无法连接到kafka 

java kafka Connection refused: no further information

 

通过这个日志信息 最终找到问题所在点。 原因是我的kafka集群  在server.properties配置文件中的配置有点问题。因为我配置了每个节点kafka的port信息  并没有为节点配置host,最终修改配置如下

port:9090
host.name=192.168.126.129
 

重启服务,消息正常发送接收。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值