我有文档中描述的以下设置。我使用的是 KafkaFlow 版本 2.4.0。请在下面找到相同的源代码。但我收不到任何消息。
`services.AddKafka(kafka => kafka
.AddCluster(cluster => cluster
.WithBrokers(new[] { "localhost:9092" })
.AddProducer<KafkaCommentProducer>(
producer =>
producer.DefaultTopic("Test")
)
)
);`
`public class KafkaCommentProducer: IKafkaCommentProducer
{
private readonly IMessageProducer<KafkaCommentProducer> _producer;
public ProductEventsProducer(IMessageProducer<KafkaCommentProducer> producer)
{
_producer = producer;
}
public Task ProduceAsync(Product product) =>
_producer
.ProduceAsync(product.Id.ToString(), product);
}
`
`TestController(IKafkaCommentProducer producer)
var result = await producer.ProduceAsync(message);`
.\bin\windows\kafka-console-consumer.bat --topic Test --from-beginning --bootstrap-server localhost:9092
我尝试了基于类型的生成器和 .Net 6 Web 应用程序
该代码片段没有 Consumer 配置,但是,问题似乎是由于序列化/反序列化不匹配造成的。
您需要为消费者/生产者使用相同的序列化协议。 您可以在here找到如何使用 Protobuf 执行此操作的示例。