void p_kafka_close(struct p_kafka_host *kafka_host, int set_fail) { if (kafka_host && !validate_truefalse(set_fail)) { if (set_fail) { Log(LOG_ERR, "ERROR ( %s/%s ): Connection failed to Kafka: p_kafka_close()\n", config.name, config.type); P_broker_timers_set_last_fail(&kafka_host->btimers, time(NULL)); } else { /* Wait for messages to be delivered */ if (kafka_host->rk) p_kafka_check_outq_len(kafka_host); } if (kafka_host->topic) { rd_kafka_topic_destroy(kafka_host->topic); kafka_host->topic = NULL; } if (kafka_host->rk) { rd_kafka_destroy(kafka_host->rk); kafka_host->rk = NULL; } } }
int p_kafka_manage_consumer(struct p_kafka_host *kafka_host, int is_start) { int ret = SUCCESS; kafkap_ret_err_cb = FALSE; if (kafka_host && kafka_host->rk && kafka_host->topic && !validate_truefalse(is_start)) { if (is_start) { ret = rd_kafka_consume_start(kafka_host->topic, kafka_host->partition, RD_KAFKA_OFFSET_END); if (ret == ERR) { Log(LOG_ERR, "ERROR ( %s/%s ): Failed to start consuming topic %s partition %i: %s\n", config.name, config.type, rd_kafka_topic_name(kafka_host->topic), kafka_host->partition, rd_kafka_err2str(rd_kafka_errno2err(errno))); p_kafka_close(kafka_host, TRUE); } } else { rd_kafka_consume_stop(kafka_host->topic, kafka_host->partition); p_kafka_close(kafka_host, FALSE); } } else return ERR; return ret; }