У меня есть топология Storm, где я должен отправлять вывод в kafka, а также обновлять значение в redis. Для этого у меня есть Kafkabolt, а также RedisBolt.
Вот как выглядит моя топология -
tp.setSpout("kafkaSpout", kafkaSpout, 3);
tp.setBolt("EvaluatorBolt", evaluatorBolt, 6).shuffleGrouping("kafkaStream");
tp.setBolt("ResultToRedisBolt",ResultsToRedisBolt,3).shuffleGrouping("EvaluatorBolt","ResultStream");
tp.setBolt("ResultToKafkaBolt", ResultsToKafkaBolt, 3).shuffleGrouping("EvaluatorBolt","ResultStream");
Проблема в том, что оба концевых болта (Redis и Kafka) прослушивают один и тот же поток из предыдущего болта (ResultStream), поэтому оба могут выйти из строя независимо. Что мне действительно нужно, так это то, что если результат успешно опубликован в Kafka, то только я обновляю значение в Redis. Есть ли способ получить выходной поток из kafkaBolt, где я могу успешно опубликовать сообщения в Kafka? Затем я могу, вероятно, прослушать этот поток в моем RedisBolt и действовать соответственно.