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

@StreamListener的自动启动

宰父飞白
2023-03-14

@KafkaListener不同,它看起来@StreamListener不支持autoStartup参数。有没有办法为@StreamListener实现相同的行为?这是我的用例:

我有一个通用的Spring应用程序,它可以监听任何Kafka主题并写入我数据库中的相应表。对于某些主题,音量较低,因此可以以非常低的延迟处理单个消息。对于其他大容量的主题,代码应该接收消息的微批处理并使用Jdbc批处理写入数据库的频率较低。理想情况下,侦听器的定义如下所示:

// low volume listener
@StreamListener(target = Sink.INPUT, autoStartup="${application.singleMessageListenerEnabled}")
public void handleSingleMessage(@Payload GenericRecord message) ...

// high volume listener
@StreamListener(target = Sink.INPUT, autoStartup="${application.multipleMessageListenerEnabled}")
public void handleMultipleMessages(@Payload List<GenericRecord> messageList) ...

对于小容量的主题,我会设置应用程序。SingleMessageListener已将启用为true和应用程序。multipleMessageListenerEnabled为false,对于大量主题,反之亦然。因此,只有一个听者会积极地听消息,而另一个不会积极地听。

有没有办法通过@StreamListener实现这一点?

共有1个答案

祁烨
2023-03-14

首先,请考虑升级到函数式编程模型,这将花费您几分钟的时间进行重构。我们几乎都不赞成基于注释的编程模型。如果你这么做了,那么你想要完成的事情就很容易了:

@SpringBootApplication
public class SimpleStreamApplication {

    public static void main(String[] args) throws Exception {
        SpringApplication.run(SimpleStreamApplication.class);
    }

    @Bean
    public Consumer<GenericRecord> singleRecordConsumer() {...}

    @Bean
    public Consumer<List<GenericRecord>> multipleRecordConsumer() {...}
}

然后你可以简单地使用--spring。云作用定义=singleRecordConsumer单个案例的属性和--spring。云作用definition=multipleRecordConsumer启动应用程序时,这将确保要激活哪个特定的侦听器。

 类似资料:
  • 首先在 /etc/init.d 目录下添加 es 脚本(可执行), #!/bin/bash su es -c "/elasticsearch-2.3.5/bin/elasticsearch -d" 2. 查看系统启动级别 [root@slave02 init.d]# runlevel N 5 3. 在 /etc/rc5.d 下建立软链 ln -s S70es /etc/init.d/es

  • 安装Windows服务时,有两个选项可以在Windows启动时自动启动Windows服务。一个是自动,另一个是自动(延迟启动)。详细来说,这两者有什么区别? 例如,如果您使用wixtoolset创建安装程序,ServiceConfig元素具有DelayedAutoStart属性。当服务在启动时启动时,这会对发生的事情产生什么影响? WiX留档:ServiceConfig元素

  • 我正在创建一个运行在Eclipse之外的无头OSGI服务器。我使用Jetty作为我的Servlet容器,使用Equinox作为我的OSGI容器。我正在使用包将Jetty添加到OSGi中。如果我从提示符手动启动jetty和org.eclipse.equinox.http.registry,那么它就可以正常运行。但是,我希望这是在无人值守的情况下运行的,所以我需要在OSGi启动时自动(或者至少是编程方

  • UMD™自动启动     设定插入UMD™后启动PSP™电源时,是否自动播放UMD™。 关 不自动开始播放。 开 会自动开始播放。

  • 可设定LiveArea™更新等自动开始的应用程序或功能。若已安装支持自动启动设定的应用程序,可将每个应用程序分别设定为启用/停用。 若为[加密]>[视听者限制]内限制使用的应用程序或功能,无法进行此设定。

  • XAMPP 3.2.1版安装在Windows 7上。它在Windows启动时没有自动启动。 尝试过:在中查看,它既不显示Apache也不显示MySQL。