【发布时间】:2020-05-14 00:38:54
【问题描述】:
我有一个包含用户 ID 的 kafka KTable。我将此 Ktable 称为“用户白名单”。此 Ktable 由“用户”主题制成。如果将新消息插入/更新到用户主题中,我会在 Ktable 中获得一条新记录并引发事件。如果我向用户主题发送带有墓碑的密钥,则从 Ktable 中删除记录但我没有收到任何事件给我的消费者。下面是代码,我如何收听 Ktable 事件。
using (var client = new HttpClient())
{
client.Timeout = TimeSpan.FromMilliseconds(Timeout.Infinite);
var request = new HttpRequestMessage(HttpMethod.Post, url);
request.Method = HttpMethod.Post;
request.Content = new System.Net.Http.StringContent("{ \"ksql\": \"select * from UserWhitelist;\",\"streamsProperties\": { \"ksql.streams.auto.offset.reset\": \"earliest\"}}", Encoding.UTF8, "application/vnd.ksql.v1+json");
//request.Content.Headers.Add("Accept", "application/vnd.ksql.v1+json");
using (var response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead))
{
using (var body = await response.Content.ReadAsStreamAsync())
using (var reader = new StreamReader(body))
while (!reader.EndOfStream)
Console.WriteLine(reader.ReadLine());
}
}
我是否理解正确,不应该提出删除?如果是这样,您可以针对我的情况建议什么方法,我是否希望有一个白名单,并在 Ktable 上进行任何更新/删除/插入时始终通知每个消费者。
【问题讨论】:
-
你为什么使用 KSQL REST API 而不是 Confluent dotnet 消费者?
-
我不确定您是否可以通过消费者订阅 ktable...如果我从主题创建 ktable,我看不到主题...
标签: c# apache-kafka kafka-consumer-api ksqldb