首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用DelphiKafkaClient (或librdkafka.dll)通配符订阅卡夫卡主题?

如何使用DelphiKafkaClient (或librdkafka.dll)通配符订阅卡夫卡主题?
EN

Stack Overflow用户
提问于 2021-11-01 08:15:13
回答 1查看 415关注 0票数 0

我使用的是DelphiKafkaClient (https://github.com/norgepaul/DelphiKafkaClient),它是Apache (librdkafka.dll)的包装器。

在创建新的使用者并指定要订阅的主题名称(在TKafkaFactory.NewConsumer中)时,普通名称工作得很好,但是regex通配符似乎不起作用(^**#^.*或其他任何东西)。

下面是来自DelphiKafkaClient的相关代码(请参阅我的评论):

代码语言:javascript
复制
procedure TKafkaConsumerThread.DoSetup;
var
  i: Integer;
  TopicList: prd_kafka_topic_partition_list_t;
  err: rd_kafka_resp_err_t;
begin
  FKafkaHandle := TKafkaHelper.NewConsumer(FConfiguration);

  if rd_kafka_brokers_add(FKafkaHandle, PAnsiChar(AnsiString(FBrokers))) = 0 then
  begin
    raise EKafkaError.Create(StrBrokersCouldNotBe);
  end;

  rd_kafka_poll_set_consumer(FKafkaHandle);

  TopicList := rd_kafka_topic_partition_list_new(0);

  for i := Low(FTopics) to High(FTopics) do
  begin
    rd_kafka_topic_partition_list_add(
      TopicList,
      PAnsiChar(AnsiString(FTopics[i])), // 'test' works, '^*' does not
      FPartitions[i]);
  end;

  err := rd_kafka_assign(FKafkaHandle, TopicList); // no errors returned, all fine

  // I have tried using rd_kafka_subscribe alongside or instead - makes no difference
  err := rd_kafka_subscribe(FKafkaHandle, TopicList); // no errors returned, all fine
end;

rd_kafka_subscribe描述说

支持

通配符(regex)主题:

\p主题列表中以\c "^“为前缀的任何主题名称都将

与集群中的全部主题列表相匹配并进行匹配

主题将添加到订阅列表中。

但是,为它指定任何通配符并调用rd_kafka_subscribe似乎也不起作用(参见上面的代码)。

因此,我的问题--如何格式化字符串并将其传递给DelphiKafkaClient或librdkafka.dll,以作为匹配主题订阅的有效正则表达式?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-09 05:42:41

DelphiKafkaClient (https://github.com/norgepaul/DelphiKafkaClient)附带了一个非常老的DLL。将DLL从0.9.2版本升级到更新版本使RegEx正常工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69794205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档