asp.net-core - Kafka - 在 ASP.Net Core 中实例化生产者类时出错
问题描述
我在用Confluent.Kafka
string kafkaEndpoint = "127.0.0.1:9092";
string kafkaTopic = "testtopic";
var producerConfig = new Dictionary<string, object> { { "bootstrap.servers", kafkaEndpoint } };
using (var producer = new Producer<Null, string>(producerConfig, null, new StringSerializer(Encoding.UTF8)))
{
// Send 10 messages to the topic
for (int i = 0; i < 10; i++)
{
var message = $"Event {i}";
var result = producer.ProduceAsync(kafkaTopic, null, message).GetAwaiter().GetResult();
Console.WriteLine($"Event {i} sent on Partition: {result.Partition} with Offset: {result.Offset}");
}
}
我收到以下编译时错误:
Producer.ProduceAsync(TopicPartition, Message)' 由于其保护级别而无法访问
像这样使用ProducerBuilder
:
var result = producer.ProduceAsync(kafkaTopic, new Message<Null, MyClass>{ Value = myObject}).GetAwaiter().GetResult();
显示错误:
Cannot convert from 'Confluent.Kafka.Message<Confluent.Kafka.Null, MyClass>' to 'Confluent.Kafka.Message<Confluent.Kafka.Null, string>
解决方案
在Confluent.Kafka
nuget v1.0.1 中,Producer
class 是一个内部类,即它不可访问。看起来您需要改为使用ProducerBuilder
,例如:
var producerConfig = new Dictionary<string, string> { { "bootstrap.servers", kafkaEndpoint } };
using (var producer = new ProducerBuilder<Null, string>(producerConfig)
.SetKeySerializer(Serializers.Null)
.SetValueSerializer(Serializers.Utf8)
.Build())
{
// Send 10 messages to the topic
for (int i = 0; i < 10; i++)
{
var message = $"Event {i}";
var result = producer.ProduceAsync(kafkaTopic, new Message<Null, string>{ Value = message}).GetAwaiter().GetResult();
Console.WriteLine($"Event {i} sent on Partition: {result.Partition} with Offset: {result.Offset}");
}
}
看起来任意类的实例可以发送为(MyClass
用目标类代替):
var result = producer.ProduceAsync(kafkaTopic, new Message<Null, MyClass>{ Value = myObject}).GetAwaiter().GetResult();
推荐阅读
- c# - EF Core 存储过程不同的返回结果
- excel - 在 Excel 中计算选择值的总和
- cordova - Cordova inappbrowser - 读取(httponly)会话 cookie
- firebase - 如何在本地测试firebase云功能express webserver更改
- vba - 想要在IE中select下的选项,一一
- c# - 如何根据ID从另一个表中获取一个表数据
- java - 如何查询 PubSub 项目主题/特定主题的 pubsub.topics.list 权限
- react-native - 降级依赖后出现新类型的模块相关错误
- c++ - 在 Qt 上使用 CMake 配置 VSCode - 找不到 ui_*.h 文件
- javascript - 升级 Chrome 后发送 WebPush 通知时出现未经授权的错误