当前位置: 首页 > 知识库问答 >
问题:

什么是Spring的Apache Kafka的监听器容器?

武向文
2023-03-14

我明白,要使一个方法成为Kafka消息侦听器的目标,我必须用@KafkaListener注释标记这个方法。此注释允许通过containerFactory元素指定KafkaListenerContainerFactory。

下面是巴尔东SpringKafka教程的一些片段。

Kafka消费者配置。JAVA

private ConsumerFactory<String, String> consumerFactory(String groupId) {
    Map<String, Object> props = new HashMap<>();
    ...
    return new DefaultKafkaConsumerFactory<>(props);
}

private ConcurrentKafkaListenerContainerFactory<String, String> kafkaListenerContainerFactory(String groupId) {
    ConcurrentKafkaListenerContainerFactory<String, String> factory =
            new ConcurrentKafkaListenerContainerFactory<>();
    factory.setConsumerFactory(consumerFactory(groupId));
    return factory;
}

@Bean
public ConcurrentKafkaListenerContainerFactory<String, String> fooKafkaListenerContainerFactory() {
    return kafkaListenerContainerFactory("foo");
}

MessageListener。JAVA

@KafkaListener(
    topics = "${message.topic.name}", 
    groupId = "foo", 
    containerFactory = "fooKafkaListenerContainerFactory")
public void listenGroupFoo(String message) {
    System.out.println("Received Message in group 'foo': " + message);
    ...
}

我不明白的是为什么我们需要一个监听器容器工厂。什么是侦听器容器?当一个方法被这样注释时会发生什么?

共有1个答案

郝池暝
2023-03-14

侦听器“容器”是跨越多种技术(JMS、RabbitMQ、Kafka、AWS等)的Spring概念。

侦听器被定义为POJO bean方法,是容器的属性(容器“包含”侦听器)。

容器负责与代理进行交互,以接收消息,并根据侦听器类型对每条消息或一批消息调用侦听器方法。

这意味着您的应用程序代码不必处理与代理交互的机制,您可以只关注业务逻辑。

框架会发现任何@KafkaListener方法,并使用工厂为每个方法创建一个容器。

 类似资料:
  • 问题内容: 在努力提高渐进式Web应用程序的性能时,我遇到了一项新功能,但我很难理解这一概念。 在我们的项目中有什么以及有什么需要? 问题答案: 被动事件侦听器是一种新兴的网络标准,是Chrome51附带的一项新功能,可极大提高滚动性能。 通过消除滚动以阻止触摸和滚轮事件监听器的需求,它使开发人员可以选择更好的滚动性能。 问题: 所有现代浏览器都具有线程化滚动功能,即使在运行昂贵的JavaScri

  • 本文向大家介绍什么是事件监听?相关面试题,主要包含被问及什么是事件监听?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: addEventListener()方法,用于向指定元素添加事件句柄,它可以更简单的控制事件,语法为 element.addEventListener(event, function, useCapture); 第一个参数是事件的类型(如 "click" 或 "mouse

  • 问题内容: Java并发编程中所指的监视器是什么? 当我看到“每个对象都关联了一个监视器”时,这是什么意思? 这是一个特殊的对象吗? 问题答案: 监视器是控制对对象的并发访问的机制。 这使您可以执行以下操作: 线程1: 线程2: 这样可以防止线程1和2同时访问受监视(同步)的部分。一个将启动,并且监视器将阻止另一个在第一个完成之前访问该区域。 这不是一个特殊的对象。它的同步机制位于类层次结构的根目

  • 问题内容: 我一直在类设计方面遇到问题,直到我发现了可观察的(使用观察者设计模式),因此使用它创建了一个小型应用程序,从而解决了我的问题。我为使用一个好的原则解决问题感到高​​兴和自豪。 为什么建议张贴者不要使用可观察的,而要告诉他们使用propertychangelistenr?使用observable是否有任何问题? 问候 问题答案: 观察者和侦听器模式非常相似。但是观察者有一个弱点:所有可观

  • 我启动一个服务器套接字,希望它监听环回地址(127.0.0.1)。代码如下:...... 但是我发现这个套接字用“netstat”命令开始监听IPv6地址“:ffff:127.0.0.1”,这导致运行在另一个进程(在Python中)中的客户端无法通过“127.0.0.1”连接到这个服务器。 为什么android会自动将IPV4地址映射到IPv6地址?

  • 本文向大家介绍spring boot 监听容器启动代码实例,包括了spring boot 监听容器启动代码实例的使用技巧和注意事项,需要的朋友参考一下 在使用Spring框架开发时, 有时我们需要在spring容器初始化完成后做一些操作, 那么我们可以通过自定义ApplicationListener 来实现. 自定义监听器 源码分析 springboot 启动应用, 执行 SpringApplic