2014-03-26 3 views
3

기본적으로 Storm 스파우트 또는 볼트에서 예외가 발생하면 스파이웨어 또는 볼트를 다시 시작하고 다시 시도합니다. 토폴로지를 중지하기위한 구성 옵션이 있습니까? 예를 들어 N 번의 반복 시도 후에? 예를 들어, Hadoop은 포기하기 전에 4 번 시도합니다.예외 발생시 폭풍우 중지 방법?

나는 모든 튜플에 예외를 발생시키는 볼트 하나로 77 일 동안 실행되는 스톰 토폴로지를 가졌습니다. 그런 상황에서 나는 오히려 실패하여 뭔가 잘못되었다는 것을 알게 될 것입니다.

+0

이것은 우리가 FailedException에 랩핑하지 않는 한 예외가 발생하면 우리의 토폴로지가 멈추기 때문에 이상하게 들린다. (재 시도 할 경우). – bridiver

+0

나는 볼트 코드로 명시 적으로 포장하지는 않지만 두 개의 스톰 설치 사이에 다른 시스템 전체 설정이있는 것처럼 들립니다. 내 시스템 관리자는 그것에 대해 모르지만 나는 SO에 누군가가 있기를 바라고 있습니다. –

+0

토폴로지를 중지하지 않으려는 경우 토폴로지는 이벤트를 실시간으로 처리합니다. 튜플이 치명적인 오류를 발생시키는 경우에는 폐기하고 어딘가에 잠재적으로 기록해야하지만 나머지 튜플을 처리하기 위해 토폴로지를 차단하면 안됩니다. – Svend

답변

2

(현재) 토폴로지를 중지 할 수있는 옵션이 없습니다. 그리고 솔직히, 예외가 총알 IMHO이기 때문에 전체 토폴로지를 죽이는 것입니다.

시나리오에서 이러한 예외는 응용 프로그램 계층에서 처리해야합니다.

N 개의 반복 시도 후에 토폴로지를 중지하는 구성 옵션이 있습니까?

거기에 대한 해결책은 없지만이를 수행하고 재연 된 튜플을 계속 추적 할 수 있습니다. 임계 값이 충족되면 튜플을 로그하거나 메시징 큐로 보냅니다.

스톰 토폴로지를 77 일 동안 실행하고 볼트 하나를 모든 튜플에 예외로 설정했습니다.

그러면 볼트 코드에 버그가있을 수 있습니까?

하나의 전략은 실패한 튜플을 마사지 대기열이나 이벤트 버스 (HornetQ, Apache Kafka, Redis와 같은)로 보내고 청취자가있어 독성 튜플에 대해 즉시 통보받을 것입니다.

+1

예, 볼트 코드에 버그가 있습니다. 그게 제가 알기를 원했던 것입니다. 실행할 작은 분석마다 메시지 대기열을 설정해야합니까? 당신은 메이저 프로덕션처럼 들리게 만듭니다 --- 아무도 스톰과 함께 빠른 일회용을하지 못합니까? 특수한 직업에서 실패 할 경우 눈에 잘 띄지 않게 사망해야합니다. –

+0

@JimPivarski Storm을 감독하에 (자동 재시작) 실행하지 않는다고 가정하면이 경우 System.exit()을 호출하면 도움이 될 수 있습니다. – Chiron

0

내가 본 것만 큼 스톰은 튜플을 재 시도하지 않는다. 기본적으로 다음 튜플을 계속 처리합니다. Spout에 실패 메소드가 구현되어 있지 않으면 같은 튜플을 다시 시도하지 않아도됩니다.

관련 문제