登录
首页 >  Golang >  Go问答

消费者不订阅Kafka消息

来源:stackoverflow

时间:2024-03-23 14:39:28 284浏览 收藏

在由 C# 和 Go 语言编写的微服务中,使用 Confluence-Kafka 进行消息传递时,出现了一个问题。虽然 Go 服务可以接收来自所有其他服务的邮件,但 .NET 微服务只能从 .NET 微服务接收邮件。经调查发现,问题出在 .NET 服务中未设置密钥反序列化器,而 Go 服务正在设置密钥。在 .NET 服务中设置密钥反序列化器后,问题得以解决。

问题内容

我们有一些用c#和go语言开发的微服务。我们使用 confluence-kafka 进行消息传递,但面临一个问题:Go 服务能够使用从所有其他服务(无论是来自 go 还是 c#/.net 微服务)发布的消息。但是 .net 微服务不是从 go 微服务获取消息,而是从 .net 微服务获取消息。

我们在 Windows 平台上使用 confluence-kafka 作为 kafka 服务器和 .net 客户端。在 Go 中,我们使用 kafka-go 库(https://github.com/segmentio/kafka-go)

注意:在 go 中,我们的 kafka-go 库允许将消息发布为字节数组。而在 .net 中,我们以纯文本形式发布消息。我不确定 .net 服务将从 go-services 发布的消息作为字节数组消费是否存在问题。 我可以在kafka-tool 2.0中看到从go-services发布的消息。

预期的行为是 .net 服务能够提取/使用从 go-micro-services 发布的消息。


解决方案


找到根本原因并解决。问题是 dot net 服务中没有设置密钥反序列化器,并且 dotnet 发布者没有设置 kafka 消息的密钥,但 go 发布者正在设置密钥。由于 .net 中没有设置密钥解串器,因此他们收到 ConsumerError 错误。现在,密钥解串器设置为 .net 消费者,问题就消失了。

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>