Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 如何在启动上下文之前在内存中加载压缩主题_Spring_Spring Boot_Spring Kafka - Fatal编程技术网

Spring 如何在启动上下文之前在内存中加载压缩主题

Spring 如何在启动上下文之前在内存中加载压缩主题,spring,spring-boot,spring-kafka,Spring,Spring Boot,Spring Kafka,我在kafka中使用了一个压缩主题,在应用程序启动时将其加载到HashMap中。 然后,我收听消息的普通主题,并使用从压缩主题构造的HashMap来处理它们 在开始收听其他主题之前,如何确保压缩主题已完全读取,哈希映射已完全初始化? (与RESTController相同)实现SmartLifecycle并在start()中加载映射。确保阶段早于需要贴图的任何其他对象。谢谢,但是在KafkaListener中,我可以访问分区偏移吗?为了知道我是否通过读取所有分区直到最后一个偏移量来初始化映射?即使

我在kafka中使用了一个压缩主题,在应用程序启动时将其加载到HashMap中。 然后,我收听消息的普通主题,并使用从压缩主题构造的HashMap来处理它们

在开始收听其他主题之前,如何确保压缩主题已完全读取,哈希映射已完全初始化?
(与RESTController相同)

实现
SmartLifecycle
并在
start()
中加载映射。确保
阶段
早于需要贴图的任何其他对象。

谢谢,但是在KafkaListener中,我可以访问分区偏移吗?为了知道我是否通过读取所有分区直到最后一个偏移量来初始化映射?即使消息到达另一个侦听器类,也只会触发该特定bean的KafkaListener?您不应该为此使用
KafkaListener
;使用原始
消费者
poll()
对其进行投票,直到没有更多记录为止。但是,是的,你可以得到补偿等。;添加
@Header
参数。
KafkaListener
在这种情况下不起作用?或者最好使用
Consuler.poll()
?当更新发生时,我仍然需要更新地图(新记录),以便消费者保持不动问题是所有的
@KafkaListener
都是在同一阶段启动的;start()不会阻塞,它只是启动消费者。您还必须侦听空闲事件,以确定何时完成。在
poll()
不再返回任何记录之前(当然,在您尝试开始之后),轮询消费者会更简单。您也可以始终使用
@KafkaListener
来获取将来的更新,只需确保在关闭初始使用者之前提交偏移量,并将侦听器放在同一使用者组中。您可以将所有其他侦听器的AutoStart属性设置为false;并在构建地图后通过注册表手动启动它们。