Kafka桥接概述
Kafka 桥接允许配置两个对象,以在 Kafka 集群和 Solace PubSub+ 软件事件代理之间进行桥接。配置完成后,可以在两个方向上进行消息流传输。此功能直接嵌入在事件代理中,换句话说,不需要外部 Kafka Connect 基础设施即可在 Kafka 之间传递消息。
Kafka 桥接由以下配置对象组成:
-
Kafka 接收器——从一个或多个 Kafka 主题接收事件,将事件转换为 Solace 消息格式(SMF)消息,并将其发布到 PubSub+ 事件代理的主题上。
-
Kafka 发送器——从一个或多个队列中获取 SMF 消息,将消息转换为 Kafka 事件,并将其发送到远程 Kafka 集群的 Kafka 主题上。
此功能仅支持软件事件代理,不支持设备。
在事件代理版本 10.6.1 之前的版本中进行的任何 Beta Kafka 桥接配置在独立部署中升级到版本 10.6.1 或更高版本时将被丢弃。此外,在尝试升级到 10.6.1 或更高版本之前,您必须删除在冗余高可用性部署中使用的任何 Beta Kafka 桥接配置。
Kafka 接收器锚点
每个 Kafka 接收器包含一个主题绑定列表。每个主题绑定指定了从其获取消息的 Kafka 主题,并包括决定如何将 Kafka 主题的消息转换为 Solace 消息的属性。
从 Kafka 主题转换的消息被发布到 Solace 消息总线。由于 Kafka 主题可能不适合作为 Solace 主题,您必须使用替换表达式来构建接收到的消息的 Solace 主题。替换表达式是 Solace 特有的语言,用于将特定文本属性替换为系统生成的输出。例如,在 Kafka 主题中常见的模式是使用点或下划线嵌入层次结构(例如 "a.b.c"),表达式 ${replace(kafkaTopic(),".","/")}
会将这些转换为 SMF 主题,并允许在 Solace 网络内进行更丰富的主题匹配。
以下图示展示了这些组件:
以下表格描述了如何将消息从 Kafka 代理转换为 PubSub+ 事件代理:
Kafka | Solace | 注释 |
---|---|---|
payload | payload | 有效载荷始终写入 Solace 二进制附件。 |
partition key | partition key | Solace 分区键根据您配置的主题绑定的本地键替换表达式进行设置。有关更多信息,请参见配置分区键生成。 |
topic | 用户属性 k_topic | |
partition number | 用户属性 k_partition | |
partition offset | 用户属性 k_offset | |
timestamp | 发送者时间戳 | |
headers | 用户属性 | 所有 Kafka 标头都转换为 Solace 用户属性。 |
(various) | topic | Solace 主题根据您配置的主题绑定的本地主题替换表达式进行设置。有关更多信息,请参见配置 SMF 主题生成。 |
有关如何设置事件代理以使用 Kafka 接收器从 Kafka 集群接收事件的信息,请参见配置 Kafka 接收器。
Kafka 发送器锚点
每个 Kafka 发送器包含一个队列绑定列表。每个队列绑定指定了从中获取消息的队列,并包括决定如何将这些消息发送到 Kafka 集群的属性。这些是普通队列,在 Kafka 发送器的上下文之外进行配置,因此队列吸引的消息取决于为其配置的队列订阅集。然后,这些消息被发送到每个队列绑定配置的单个 Kafka 主题。
由于 Kafka 主题是分区的,分区选择由客户端(在这种情况下是 Solace 事件代理)决定,每个 Kafka 发送器提供几种分区选择选项:
- 随机——选择 Kafka 主题的随机分区。
- 明确——选择 Kafka 主题的明确分区。
- 一致——使用分区键的哈希选择分区。
当使用一致的分区选择方案时,您可以使用替换表达式来确定分区键。例如,您可以使用表达式 ${topic()}
,这将生成与发布的 Solace 主题匹配的分区键。这将导致所有具有相同 Solace 主题的消息被发送到相同的 Kafka 主题分区。
即使不使用一致的分区方案,也可以使用替换表达式生成 Kafka 消息的键。Kafka 集群中可能有其他实体使用该键,即使 Kafka 发送器不使用它来确定分区,能够使用替换表达式设置它也是有用的。
以下图示展示了这些组件:
以下表格描述了如何将消息从 Solace PubSub+ 事件代理转换为 Kafka 代理:
Solace | Kafka | 注释 |
---|---|---|
payload | payload | |
topic | Kafka 主题根据您配置的队列绑定的远程主题属性进行设置。这是每个队列绑定的单个固定值。有关更多信息,请参见配置 SMF 到 Kafka 主题映射。 | |
(various attributes) | partition key | Kafka 分区键根据您配置的队列绑定的远程键替换表达式按消息生成。有关更多信息,请参见配置 Kafka 分区键生成。 |
发送者时间戳 | 时间戳 | |
用户属性 | 标头 | 所有 Solace 用户属性都转换为 Kafka 标头。 |
有关如何设置事件代理以使用 Kafka 发送器将消息发送到 Kafka 集群的信息,请参见配置 Kafka 发送器。