我想知道R& D中的任何人是否有使用.NET的Kafka的任何经验。下面的代码片段来自客户端,它是用Java编写的。似乎Java的Kafka库比.NET的库更丰富。我试图做的是在客户端站点的远程服务器上启动Kafka生产者,以便通过Kafka生产者提供RTA状态。
我需要做的是在.NET中重新创建以下代码,尤其是最后一行' openInterfacesSubscriber.send()'。我正在使用Confluent的.NET软件包。任何帮助将不胜感激。
code
答案 0 :(得分:1)
欢迎使用Stack Overflow!
.NET API仍在进行中,在Windows上托管也有点棘手(或者我发现)。
我一直在使用实验性的.net Kafka客户端,发现很容易#34; map"到你发布的java源码:
Producer
构造函数的参数在代码中完成。您可能需要更改编码。KafkaTemplate<>.send
映射到Producer.ProduceAsync
请注意,客户端仍在不断发展,这是您的代码版本,适用于我的注释nuget版本:
static void Main(string[] args)
{
// Client: .net core console app 2.0 / Confluent.Kafka nuget 1.0.0-experimental-2
// Server: Kafka 1.0.0
Dictionary<string, object> config = new Dictionary<string, object>()
{
{ "bootstrap.servers", "ept-oi-log" },
{ "group.id", "ept-oi-log" },
{ "enable.auto.commit", true },
{ "session.timeout.ms", 15000 },
{ "client.id", "1" },
};
Producer(config).Wait();
}
static async Task Producer(IEnumerable<KeyValuePair<string, object>> kafkaConfig)
{
var kafkaTopic = "realtimesubscriptionrequest";
using (var producer = new Producer<int, string>(kafkaConfig, new IntSerializer(), new StringSerializer(System.Text.Encoding.UTF8)))
{
int i = 0;
foreach (var measureName in new[] { "AGENTBYACCOUNTMEASURES", "AGENTBYROUTINGSERVICEMEASURES" })
{
String subRequest = String.Format(@" {{""userName"":""{0}"",""password"":""{1}"",""subscriptionRequestId"":""5d09vjfgk"",""request"":""SUBSCRIBE"", ""measuresStream"":""{2}"",""version"":""3.4""}}",
"ggghhhh@xxx.lab", "xxxxxxx", measureName);
await producer.ProduceAsync(kafkaTopic, new Message<int, string>() { Key = i++, Value = subRequest });
}
}
}