docker - Kafka Producer.Net Core Dockerized 抛出异常本地:消息超时
问题描述
在我的 Windows 机器上,我创建了一个运行此命令的 kafka 容器:
docker run -d --network kafka --name=MyKafka -p 9092:9092 -p 9094:9094
-e ALLOW_PLAINTEXT_LISTENER=yes -e KAFKA_ZOOKEEPER_CONNECT=MyZookeeper:2181
-e KAFKA_LISTENERS=INTERNAL://:9094,EXTERNAL://:9092
-e KAFKA_ADVERTISED_LISTENERS=INTERNAL://kafka:9094,EXTERNAL://localhost:9092
-e KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
-e KAFKA_INTER_BROKER_LISTENER_NAME=EXTERNAL
confluentinc/cp-kafka:5.5.0
并创建了一个运行此命令的 zookeeper 容器:
docker run -d --network kafka --name=MyZookeeper -p 2181:2181 -e ALLOW_ANONYMOUS_LOGIN=yes -e ZOOKEEPER_CLIENT_PORT=2181 confluentinc/cp-zookeeper:5.5.0
我的 .net Core 生产者应用程序的 docker compose 文件如下:
version: '1.0'
services:
api:
image: ${DOCKER_REGISTRY}cds.Producer.api
ports:
- "65200:65200"
- "65201:65201"
build:
context: .
dockerfile: src/Api/Dockerfile
environment:
- ASPNETCORE_URLS=http://+:65200
- ASPNETCORE_HTTP_PORT=65200
- MANAGEMENT_HTTP_PORT=65201
- ASPNETCORE_ENVIRONMENT=Development
networks:
default:
external:
name: kafka
在这个应用程序上,我使用的是 nugget Confluent.Kafka,我正在运行以下代码:
ProducerConfig conf = new ProducerConfig
{
BootstrapServers = "kafka:9094",
MessageSendMaxRetries = 2,
MessageTimeoutMs = 500
};
IProducer<string, string> producer ??= new ProducerBuilder<string, string>(conf).Build();
try
{
Message<string, string> message = new Message<string, string> { Key = "testkey", Value = "test message" };
await producer.ProduceAsync("mytopic", message, cancellationToken);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
出于某种原因,我不断得到例外
Local: Message timed out
我试过localhost:9092
了,它也没有用。
解决方案
您已经定义了一个网络,但没有将您的服务附加到它
您需要将网络块添加到 API 服务
networks:
- kafka
我还建议将您的经纪人和动物园管理员也放入撰写文件中
推荐阅读
- asp.net-core - 由于请求实体太大,页面未显示。在.Net Core 2.1
- java - 在多线程情况下使用单例类并保证线程安全!(最佳实践和最佳性能)
- angular - Angular“ng build”在同一个仓库中编译前端和后端的问题
- api - 如何修复 masm32:错误 LNK2001:未解析的外部符号
- python-2.7 - TypeError:不支持的类型
- swift - SwiftFormat: What is the reasoning behind andOperator rule?
- reactjs - Basically I'm trying to add an EventListener for resize and
- javascript - Nodejs Return statements not working but console.log() works
- c++ - 如何有效地按第二个值对向量对进行分组?
- python - gRPC socket closed message