Java 闪电缓慢时,暴风卡夫卡斯波特失败
我使用卡夫卡风暴整合。卡夫卡将数据加载到队列,卡夫卡喷口将提取数据和进程。我有下面的设计Java 闪电缓慢时,暴风卡夫卡斯波特失败,java,apache-kafka,apache-storm,Java,Apache Kafka,Apache Storm,我使用卡夫卡风暴整合。卡夫卡将数据加载到队列,卡夫卡喷口将提取数据和进程。我有下面的设计 Kafka -> Queue -> KafkaSpout -> Process1 Bolt -> Process2 Bolt 问题是,如果Process2 Bolt处理数据的时间较长,则KafkaSpout会失败,并再次尝试从队列中读取数据,这将导致重复记录 如果Bolt处理速度慢,为什么KafkaSpout会将其视为失败?解决办法是什么?我是否必须在storm中设置任何超时或任何
Kafka -> Queue -> KafkaSpout -> Process1 Bolt -> Process2 Bolt
问题是,如果Process2 Bolt处理数据的时间较长,则KafkaSpout会失败,并再次尝试从队列中读取数据,这将导致重复记录
如果Bolt处理速度慢,为什么KafkaSpout会将其视为失败?解决办法是什么?我是否必须在storm中设置任何超时或任何类似属性?如果处理时间过长,storm将使元组失败,默认情况下为30秒。自Storm以来,一旦失败,Kafka喷口将重播相同的消息,直到成功处理元组
如果元组的消息树未能在指定的超时内完全处理,则认为元组失败。可以使用Config.topology_MESSAGE_timeout_SECS配置在特定于拓扑的基础上配置此超时,默认值为30秒