2、Connecting to Kafka

KafkaAdmin-请参阅配置主题

ProducerFactory-请参阅发送消息

ConsumerFactory-请参阅接收消息

从2.5版本开始,每个版本都扩展了KafkaResourceFactory。这允许在运行时通过向引导服务器的配置中添加Supplier<String>来更改引导服务器:setBootstrapServersSupplier(()->...)。所有新连接都将调用此命令以获取服务器列表。消费者和生产者通常寿命较长。要关闭现有的生产者,请在DefaultKafkaProducerFactory上调用reset()。要关闭现有的Consumers,请在KafkaListenerEndpointRegistry上调用stop()(然后调用start())和/或在任何其他侦听器容器bean上调用stop()和start()。

为了方便起见,该框架还提供了一个支持两组引导服务器的ABSwitch集群;其中一个在任何时候都是活动的。通过调用setBootstrapServersSupplier()配置ABSwitchCluster并将其添加到生产者和消费者工厂以及KafkaAdmin。当你想切换时,在生产者工厂上调用primary()或secondary()并调用reset()来建立新的连接;对于消费者,stop()和start()都是监听器容器。使用@KafkaListeners时,停止()和启动()KafkaListenerEndpointRegistry bean。

有关更多信息,请参阅Javadocs。

Factory Listeners

从2.5版本开始,DefaultKafkaProducerFactory和DefaultKafkaConsumerFactory可以配置一个监听器,以便在创建或关闭生产者或消费者时接收通知。

java 复制代码
interface Listener<K, V> {

    default void producerAdded(String id, Producer<K, V> producer) {
    }

    default void producerRemoved(String id, Producer<K, V> producer) {
    }

}
java 复制代码
interface Listener<K, V> {

    default void consumerAdded(String id, Consumer<K, V> consumer) {
    }

    default void consumerRemoved(String id, Consumer<K, V> consumer) {
    }

}

在每种情况下,id都是通过将客户端id属性(在创建后从metrics()中获得)附加到工厂beanName属性中创建的,用..分隔。。

例如,这些监听器可用于在创建新客户端时创建和绑定Micrometer KafkaClientMetrics实例(并在客户端关闭时关闭它)。

该框架提供了正是这样做的监听器;请参见千分尺本地度量。

Default client ID prefixes

从版本3.2开始,对于使用Spring.application.name属性定义应用程序名称的Spring Boot应用程序,此名称现在用作这些客户端类型的自动生成客户端ID的默认前缀:

不使用消费者群体的消费者客户

生产商客户

管理员客户端

这使得在服务器端更容易识别这些客户端,以便进行故障排除或应用配额。

Client Type Without application name With application name

|----------------------------------------|--------------------|--------------------|
| consumer without consumer group | consumer-null-1 | myapp-consumer-1 |
| consumer with consumer group "mygroup" | consumer-mygroup-1 | consumer-mygroup-1 |
| producer | producer-1 | myapp-producer-1 |
| admin | adminclient-1 | myapp-admin-1 |

相关推荐
村口曹大爷1 小时前
Aider-TUI: The Professional AI Pair Programming Shell
人工智能·ai·code·aider
码农水水2 小时前
中国电网Java面试被问:流批一体架构的实现和状态管理
java·c语言·开发语言·面试·职场和发展·架构·kafka
lkbhua莱克瓦242 小时前
稠密、稀疏与MoE:大模型时代的三重架构革命
人工智能·深度学习·机器学习·ai·架构
程序员agions2 小时前
Node.js 爬虫实战指南(三):分布式爬虫架构,让你的爬虫飞起来
分布式·爬虫·node.js
寻星探路3 小时前
【算法进阶】滑动窗口与前缀和:从“和为 K”到“最小覆盖子串”的极限挑战
java·开发语言·c++·人工智能·python·算法·ai
基层小星3 小时前
用ai写完材料有个差不多后,材料星如何精准修改润色?
人工智能·ai·ai写作·笔杆子·公文写作·修改润色
回家路上绕了弯4 小时前
Spring Boot多数据源配置实战指南:从选型到落地优化
分布式·后端
图生生4 小时前
跨境电商图片翻译痛点解决:AI工具实现多语言适配一键生成
人工智能·ai
赋创小助手5 小时前
超微 SYS-E403-14B-FRN2T 深度解析:面向边缘与 IoT 场景的高扩展紧凑型服务器
运维·服务器·人工智能·科技·物联网·ai·边缘计算
小雨下雨的雨5 小时前
Flutter鸿蒙共赢——生命之痕:图灵图样与反应-扩散方程的生成美学
分布式·flutter·华为·交互·harmonyos·鸿蒙系统