【问题标题】:spring cloud stream kafka binding configspring cloud stream kafka绑定配置
【发布时间】:2018-12-16 16:07:55
【问题描述】:

尝试开发一个Spring Cloud应用,使用kafka

kafka使用的配置是:

spring:
  application:
    name: service-sample

  cloud:
    stream:
      bindings:
        output: 
          destination: lrctms-cloud-dev
          content-type: application/json

      kafka:
        binder:
          brokers: 192.168.11.153
          defaultBrokerPort: 9092
          zkNodes: 192.168.11.153

运行应用程序,我可以看到这些配置被拾取

o.a.k.clients.admin.AdminClientConfig    : AdminClientConfig values:
      bootstrap.servers = [192.168.11.153:9092]
      client.id =
      connections.max.idle.ms = 300000
      metadata.max.age.ms = 300000
      metric.reporters = []
      metrics.num.samples = 2
      metrics.recording.level = INFO
      metrics.sample.window.ms = 30000
      receive.buffer.bytes = 65536
      reconnect.backoff.max.ms = 1000
      reconnect.backoff.ms = 50
      request.timeout.ms = 120000
      retries = 5
      retry.backoff.ms = 100
      sasl.jaas.config = null
      sasl.kerberos.kinit.cmd = /usr/bin/kinit
      sasl.kerberos.min.time.before.relogin = 60000
      sasl.kerberos.service.name = null
      sasl.kerberos.ticket.renew.jitter = 0.05
      sasl.kerberos.ticket.renew.window.factor = 0.8
      sasl.mechanism = GSSAPI
      security.protocol = PLAINTEXT
      send.buffer.bytes = 131072
      ssl.cipher.suites = null
      ssl.enabled.protocols = [TLSv1.2, TLSv1.1, TLSv1]
      ssl.endpoint.identification.algorithm = null
      ssl.key.password = null
      ssl.keymanager.algorithm = SunX509
      ssl.keystore.location = null
      ssl.keystore.password = null
      ssl.keystore.type = JKS
      ssl.protocol = TLS
      ssl.provider = null
      ssl.secure.random.implementation = null
      ssl.trustmanager.algorithm = PKIX
      ssl.truststore.location = null
      ssl.truststore.password = null
      ssl.truststore.type = JKS

问题是以下错误信息:

adminclient-1] o.apache.kafka.common.network.Selector   : [AdminClient clientId=adminclient-1] Connection with 127.0.0.1 disconnected
 java.net.ConnectException: Connection refused
         at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
         at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
         at org.apache.kafka.common.network.PlaintextTransportLayer.finishConnect(PlaintextTransportLayer.java:50)
         at org.apache.kafka.common.network.KafkaChannel.finishConnect(KafkaChannel.java:106)
         at org.apache.kafka.common.network.Selector.pollSelectionKeys(Selector.java:458)
         at org.apache.kafka.common.network.Selector.poll(Selector.java:412)
         at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:460)
         at org.apache.kafka.clients.admin.KafkaAdminClient$AdminClientRunnable.run(KafkaAdminClient.java:1006)
         at java.lang.Thread.run(Thread.java:748)

如何配置这个“AdminClient”并传递正确的host/ip信息呢?检查了Spring Cloud Stream Kafka Binder Reference Guide,但找不到答案。

【问题讨论】:

  • AdminClientConfig values: bootstrap.servers = [192.168.11.153:9092] ... 看起来它对我有用。也许您实际的 Kafka 广告侦听器配置错误并返回 127.0.0.1
  • @cricket_007 你是对的,KAFKA_ADVERTISED_HOST_NAME 设置为“127.0.0.1”。谢谢!

标签: apache-kafka spring-cloud-stream


【解决方案1】:

移动评论回答

因此,根据日志,设置了正确的配置,但这只是与代理的初始连接。然后,Kafka 控制器将集群中每个代理的advertised.host.name/advertised.listeners 列表发送回您的客户端,在大多数情况下,需要将其配置为代理的外部地址由外部客户解决。如果您得到其他任何东西(在您的情况下为 127.0.0.1),这需要是要检查的属性

【讨论】:

    猜你喜欢
    • 2020-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多