【问题标题】:If Service produce event to one topic, only this service have to consume processed event from another topic (Kafka)如果服务向一个主题产生事件,则只有该服务必须使用来自另一个主题(Kafka)的已处理事件
【发布时间】:2021-05-02 09:23:37
【问题描述】:

我必须使用 Kafka(Java 技术栈)实现事件驱动的架构服务。 我画了个例子:

假设我有 3 个外部生产者(Ms1、Ms2、Ms3),他们将事件发送到我的服务读取的一个主题。收到事件后,我的服务处理一些业务逻辑,然后将事件推送到另一个主题。 Ms1、Ms2、Ms3 订阅这个话题,听听进来的内容。我的目标是:如果 Ms1 向 topic-1 发送事件,那么只有 Ms1 必须收到来自 topic-2 的响应事件(尽管其他消费者正在收听这个话题同样,他们也被禁止接收属于 Ms1) 的事件。如果 Ms2 向 topic-1 发送事件,则只有 Ms2 必须从 topic-2 接收事件。

而且我不知道会有多少消费者/生产者。是浮动金额。今天可能是 3 个外部生产者/消费者,明天可能是 30 个,依此类推。他们可以订阅和取消订阅。

【问题讨论】:

  • This 应该有帮助
  • 这似乎是使用键发送消息/事件的用例。然后,您可以在业务逻辑中根据您的键决定将消息/事件转发到何处。
  • 看起来像分区主题:instaclustr.com/….

标签: apache-kafka


【解决方案1】:

Kafka 记录不应该“属于”特定服务,IMO,这主要是关于数据沿袭的元数据;也许这些信息对于您尚未考虑的其他一些消费者用例会很有价值。
如果您有来自一个主题的多个消费者,那么除了过滤和显式分区分配之外没有任何逻辑可以将“所有 M1 生产者事件传递给所有 M1 消费者”

如果您想锁定特定客户端对主题的访问权限,请使用 ACL 和证书。否则,没有什么能阻止新的消费者群体订阅他们想要的任何主题

【讨论】:

    猜你喜欢
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    • 2022-08-17
    • 2020-06-23
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    相关资源
    最近更新 更多