C# 分配给分区的循环消息不适用于asp.net核心中没有密钥的消息

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

试图以循环方式向所有分区发送消息,但所有消息都将进入最后一个分区。谁能帮我一下吗

我正在使用合流.Kafkanuget包。我的生产者配置-

"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分钟后发送更多数据。在这种情况下,所有的数据也都将进入最后一个分区。