首页 > 解决方案 > Storm 拓扑工作者在抛出 AvroRuntimeException 后死亡

问题描述

我有一个场景,我的第一个拓扑螺栓是基于 Avro 模式反序列化来自 Kafka 主题的消息,反序列化对于遵循正确模式的消息工作正常,并且当消息只是其他任何不能时抛出 AvroRuntimeException被反序列化,虽然我捕捉到异常并确认元组,但我得到了 worker dead 错误,这与风暴配置有关吗?

@Override
public void execute(Tuple input) {
    byte[] bytes = null;
    try {
        bytes = getBinaryFieldFromTuple(input);
        if (ArrayUtils.isEmpty(bytes)) {
            log.error("Received empty byte[] - skipping.");
            return;
        }
        Message<E> message = getMessageDecoder().decode(bytes);
        E payload = message.getPayload();
        emit(input, getValuesToEmit(payload, message.getHeaders()));
    } catch (Exception ex) {
        log.error("Error while deserializing: {}", bytes, ex);
    } finally {
        ack(input);
    }
}

我看不出具体的原因。

标签: apache-kafkaapache-storm

解决方案


推荐阅读