首页 > 解决方案 > 轮询消息分配到分区不适用于 asp.net 核心中没有密钥的消息

问题描述

尝试以循环方式向所有分区发送消息,但所有消息都进入最后一个分区。任何人都可以帮我吗?

我正在使用Confluent.Kafka nuget 包。我的生产者配置 -

"ProducerConfiguration": {
        "bootstrap.servers": "localhost:9092"
      }

还有我的 Kafka 制作人班——

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 });
        }
    }

发布消息,例如-

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";
        }
    }

所有消息都只发送到最后一个分区 - 在这张图片中检查它

提前致谢。

标签: c#asp.net-core.net-coreapache-kafkamicroservices

解决方案


推荐阅读