gpt4 book ai didi

java - 是否可以使用 Kafka 将 Java 对象发送到 C# 应用程序

转载 作者:行者123 更新时间:2023-12-04 08:13:08 25 4
gpt4 key购买 nike

是否可以将 Java 对象(比如用户)发送到在 C# 中使用并序列化为用户对象的主题?
假设我有以下从 Java PoJo 构建的 avro 模式(字段是名称和年龄)

{
"namespace": "io.confluent.developer",
"type": "record",
"name": "User",
"fields": [
{
"name": "name",
"type": [
"null",
"string"
],
"default": null
},
{
"name": "age",
"type": [
"null",
"int"
],
"default": null
}
]
}
生成一个 User.class
然后像这样发送它:
Service
@CommonsLog(topic = "Producer Logger")
@RequiredArgsConstructor
public class Producer {

@Value("${topic.name}")
private String TOPIC;

private final KafkaTemplate<String, User> kafkaTemplate;

void sendMessage(User user) {
this.kafkaTemplate.send(this.TOPIC, user.getName(), user);
log.info(String.format("Produced user -> %s", user));
}
}
我也有一个 Schema 注册表,但我不知道如何在 C# 中使用该消息并将其反序列化为具有相同字段的 User 类:
public class Users

{

public int id = 0;

public string name = string.Empty;

public Users()

{

// Constructor Statements

}

public void GetUserDetails(int uid, string uname)

{

id = uid;

uname = name;

Console.WriteLine("Id: {0}, Name: {1}", id, name);

}

public int Designation { get; set; }

public string Location { get; set; }

}
谢谢您的帮助。

最佳答案

是的,这是可能的。您可以使用 official .NET kafka client消费消息。
您必须做的第一件事是根据您使用的相同架构生成 C# 类。你可以这样做:

  • 安装 avrogen 工具:dotnet tool install --global Apache.Avro.Tools
  • 生成类:avrogen -s user_schema.avsc .

  • 然后你会得到 User.cs与类实现。您需要做的就是配置 .NET Kafka 客户端并使用消息:
    var schemaRegistryConfig = new SchemaRegistryConfig
    {
    Url = "schemaRegistryUrl"
    };

    var consumerConfig = new ConsumerConfig
    {
    BootstrapServers = "bootstrapServers",
    GroupId = "group"
    };

    using var schemaRegistry = new CachedSchemaRegistryClient(schemaRegistryConfig);
    using var consumer = new ConsumerBuilder<string, User>(consumerConfig)
    .SetValueDeserializer(new AvroDeserializer<User>(schemaRegistry).AsSyncOverAsync())
    .Build();

    consumer.Subscribe(topicName);

    var consumeResult = consumer.Consume(cts.Token);
    你可以看看 this example了解更多信息。
    请注意,您不能使用 User您在问题中提供的类,因为对类结构有一些要求。因此,您应该使用从 Avro 架构中使用该工具生成的那个。

    关于java - 是否可以使用 Kafka 将 Java 对象发送到 C# 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65847510/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com