C# 分配给分区的循环消息不适用于asp.net核心中没有密钥的消息
试图以循环方式向所有分区发送消息,但所有消息都将进入最后一个分区。谁能帮我一下吗 我正在使用合流.Kafkanuget包。我的生产者配置-C# 分配给分区的循环消息不适用于asp.net核心中没有密钥的消息,c#,asp.net-core,.net-core,apache-kafka,microservices,C#,Asp.net Core,.net Core,Apache Kafka,Microservices,试图以循环方式向所有分区发送消息,但所有消息都将进入最后一个分区。谁能帮我一下吗 我正在使用合流.Kafkanuget包。我的生产者配置- "ProducerConfiguration": { "bootstrap.servers": "localhost:9092" } 还有我的卡夫卡制作人班- public class Publisher { private ProducerC
"ProducerConfiguration": {
"bootstrap.servers": "localhost:9092"
}
还有我的卡夫卡制作人班-
public class Publisher
{
private ProducerConfig _producerConfig;
public Publisher(IOptions<ApplicationSetting> _applicationSetting)
{
var producerConfig = _applicationSetting.Value.KafkaConfiguration.ProducerConfiguration;
_producerConfig = new ProducerConfig(producerConfig);
}
public async Task<DeliveryResult<Null, TValue>> Publish<TValue>(TValue message, string topic = null)
{
using var producer = new ProducerBuilder<Null, TValue>(_producerConfig)
.SetValueSerializer(new JsonSerializer<TValue>())
.Build();
var topicName = String.IsNullOrEmpty(topic) ? message.GetType().Name : topic;
return await producer.ProduceAsync(topicName, new Message<Null, TValue>() { Value = message });
}
}
公共类发布程序
{
私人生产者配置(ProducerConfig);;
公共发布服务器(IOptions\u应用程序设置)
{
var producerConfig=\u applicationSetting.Value.kafka配置.ProducerConfiguration;
_producerConfig=新的producerConfig(producerConfig);
}
公共异步任务发布(TValue消息,字符串主题=null)
{
使用var producer=new ProducerBuilder(\u producerConfig)
.SetValueSerializer(新的JsonSerializer())
.Build();
var topicName=String.IsNullOrEmpty(主题)?message.GetType()。名称:主题;
返回wait-producer.ProduceAsync(topicName,new Message(){Value=Message});
}
}
像这样发布消息-
public class DemoHandler : IRequestHandler<SendMail, string>
{
private readonly Publisher _publisher;
public DemoHandler(Publisher publisher)
{
_publisher = publisher;
}
public async Task<string> Handle(SendMail message, CancellationToken cancellationToken)
{
await _publisher.Publish(message);
return "Message sent";
}
}
public类DemoHandler:IRequestHandler
{
私人只读出版商(u Publisher);
公共DemoHandler(发布者)
{
_publisher=publisher;
}
公共异步任务句柄(SendMail消息、CancellationToken CancellationToken)
{
等待发布者发布(消息);
返回“已发送消息”;
}
}
所有消息都只发送到最后一个分区-
提前感谢。您能在一段时间后尝试向主题发送更多数据吗?这5条消息可能是由生产者批处理在一起,然后发送到一个分区(在您的情况下是最后一个分区)。@mike我试图在10分钟后发送更多数据。在这种情况下,所有的数据也都将进入最后一个分区。