java-引导中没有给出可解析的引导URL。使用docker的服务器
发布时间:2022-03-03 21:56:57 312
相关标签: # php
我一直在和卡夫卡打交道时遇到一些问题,我是一个乞丐,我还在学习,所以我希望能得到任何帮助。
在我的特殊情况下,我正在与卡夫卡和多克合作编写一个文件。在这里,我展示我的撰写文件:
version: "3.2"
services:
####################################
zookeeper:
image: 'confluentinc/cp-zookeeper:latest'
container_name: zookeeper
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
ports:
- 2181:2181
###############################################################
broker:
image: 'confluentinc/cp-kafka:latest'
container_name: broker
depends_on:
- zookeeper
ports:
- 9092:9092
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
ALLOW_PLAINTEXT_LISTENER: "yes"
# Exposes 9092 for external connections to the broker
# Use kafka:29092 for connections internal on the docker network
# See https://rmoff.net/2018/08/02/kafka-listeners-explained/ for details
KAFKA_LISTENERS: "PLAINTEXT://:29092,PLAINTEXT_HOST://:9092"
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker:29092,PLAINTEXT_HOST://localhost:9092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_DELETE_TOPIC_ENABLE: "true"
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
################################################################
kafdrop2:
image: 'obsidiandynamics/kafdrop:latest'
container_name: kafdrop2
ports:
- 9000:9000
environment:
KAFKA_BROKERCONNECT: broker:29092
此外,我使用Kafdrop来更快地查看主题和消息,而不是使用命令行。
我创建了一个名为First_topic的主题,我有以下代码:
package com.nrich.curse.kafka.tutorial;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.common.serialization.StringSerializer;
import java.util.Properties;
public class demo {
public static void main(String[] args) {
// Create the producer properties
String servers = "broker:29092";
Properties properties = new Properties();
// properties.setProperty("bootstrap.servers", "broker:9092");
properties.setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, servers);
// Serializer helps the producer know what type of value is send
// and how to serialize it to bytes
properties.setProperty(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
properties.setProperty(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
// Create the producer, using String in each one mean the key/value be a string
KafkaProducer producer = new KafkaProducer(properties);
// Creating the producer record
ProducerRecord record =
new ProducerRecord("First_Topic","hello world nuevo nuevo funcionando");
// Send Data - COnsider it is asyncronic
producer.send(record);
// flush the data
producer.flush();
// flush and close the producer
producer.close();
}
}
我的问题是,当我使用以下方法设置引导服务器或方向时:String servers = "broker:29092";
我尝试使用docker运行jar文件,但失败了。jar文件是用maven编译的,所以我所做的就是将docker文件放入jar中。
我的docker文件如下所示:
FROM openjdk:11
WORKDIR /
COPY kafka-course-1.0.jar ./
CMD java -Xmx10m -Xms10m -jar kafka-course-1.0.jar
我已经构建了它,当我运行它时,总是会出现以下错误:
[main] WARN org.apache.kafka.clients.ClientUtils - Couldn't resolve server broker:29092 from bootstrap.servers as DNS resolution failed for broker
[main] INFO org.apache.kafka.clients.producer.KafkaProducer - [Producer clientId=producer-1] Closing the Kafka producer with timeoutMillis = 0 ms.
[main] INFO org.apache.kafka.common.metrics.Metrics - Metrics scheduler closed
[main] INFO org.apache.kafka.common.metrics.Metrics - Closing reporter org.apache.kafka.common.metrics.JmxReporter
[main] INFO org.apache.kafka.common.metrics.Metrics - Metrics reporters closed
[main] INFO org.apache.kafka.common.utils.AppInfoParser - App info kafka.producer for producer-1 unregistered
Exception in thread "main" org.apache.kafka.common.KafkaException: Failed to construct kafka producer
at org.apache.kafka.clients.producer.KafkaProducer.(KafkaProducer.java:442)
at org.apache.kafka.clients.producer.KafkaProducer.(KafkaProducer.java:292)
at org.apache.kafka.clients.producer.KafkaProducer.(KafkaProducer.java:319)
at org.apache.kafka.clients.producer.KafkaProducer.(KafkaProducer.java:304)
at com.nrich.curse.kafka.tutorial.demo.main(demo.java:24)
Caused by: org.apache.kafka.common.config.ConfigException: No resolvable bootstrap urls given in bootstrap.servers
at org.apache.kafka.clients.ClientUtils.parseAndValidateAddresses(ClientUtils.java:89)
at org.apache.kafka.clients.ClientUtils.parseAndValidateAddresses(ClientUtils.java:48)
at org.apache.kafka.clients.producer.KafkaProducer.(KafkaProducer.java:416)
我不知道为什么会这样,但它不起作用。
我看到的是,如果我在没有docker的情况下运行代码,只在本地运行它,它会工作,但只有当我像这样更改引导服务器时,它才会工作:String servers = "localhost:9092";
事实上,我已经尝试过在docker中使用新的jar文件(更改引导服务器并重新编译),但甚至认为它不起作用。
正如我提到的,如果我在本地运行它,它会使用;本地主机:9092“;,制作人从主题中获得信息,如下图所示:话题中的事件
如果您有任何解决方案或建议,我们将不胜感激。非常感谢。
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报