2017-11-29 23 views
1

내 서비스 A에서 Hystrix fallback() 메소드를 사용할 수 있으므로 종속 서비스 B가 다운 될 때마다 폴백 메소드로 이동하고 제공된 정적 메시지를 표시합니다.hystrix는 대기열에있는 보류중인 요청을 복구 할 수 있습니까?

나는 또한 MQ에 실패한 요청을 전송하고 (토끼 MQ)를이 일을하는 동안 이제

, 내가 대기열에 보류 중이거나 대기중인 요청을 검색하고 종속 서비스 B가있을 때이를 재 처리 할 수있는 방법?

+0

@ ahus1 나는 당신이 hystrix에 대한 경험을 가지고있는 것을 보았습니다. 당신이 나를 도와 줄 수 있습니까? – maniker

+0

질문 제목에 맞춰보세요 : "hystrix에 대기열에있는 대기중인 요청을 복구 할 수 있습니까?" – leanne

+0

예 :-) 나는 회로를 열고 대기열에 실패한 요청을 보낼 수 있지만 서비스가 끝나면 회로가 닫히고 대기중인 요청을 사전 처리 할 예정입니까? – maniker

답변

0

아키텍처에 대한 전체적인 설명이 없으면 (여기서는 범위를 벗어날 수 있음) 달성하려는 작업을 정확히 알기가 어렵습니다. 그러나 언뜻보기에는 당신이 Hystrix를 너무 많이 기대하고있는 것처럼 들립니다. 폴백이 완료되면 완료됩니다.

대기열로 메시지를 보낸 경우 해당 메시지를 어딘가에서 소비해야합니다. 서비스 B가 실행 중일 때만 메시지를 사용하려면 논리적으로 유일한 옵션은 서비스 B가이 실패한 요청 큐에서 소모하는 것입니다. 서비스 B에 대한 요청을 반복 할 필요가 있습니다.

실패한 요청 큐에서 메시지를 받으면 상태 확인을 시작하는 워치 독 서비스가 있다고 가정합니다 서비스 B를 받고 일단 사라지면 "녹색"이 서비스 A에 대한 요청을 다시 시도합니다.

모든 것이 매우 얽힌 것처럼 들리지만, 나는 다시 생각해 볼 것을 제안합니다.

나는이 정적 메시지가 "죄송합니다. 지금 요청을 완료 할 수 없지만 백그라운드에서 시도해 드리겠습니다"라고 생각합니다.

나는 서비스 B를 순전히 처음부터 메시지로 만들어 주면 더 좋을 것이라고 느낍니다. 서비스 A가 서비스 B에 곧바로 메시지를 보내도록하십시오. 서비스가 다운되거나 과부하가 걸리는 것에 대해 걱정할 필요가 없습니다.

+0

아키텍처가 아니라면, 내가하고있는 일을 설명해 주겠다. 나는 두 개의 서비스 중 하나가 엔티티 서비스 (동사 기반 서비스 B)이고 다른 하나는 호출 서비스 (명사 기본 서비스 A)이므로 여기서 나는 내 서비스 A에서 서비스 B (엔터티 서비스)로 전화하십시오. 엔티티 서비스는 서비스 A의 요청을 받아 DB에서 트랜잭션을 만들어 서비스 A로 보내고 메시지 또는 데이터 등을 표시합니다. 그러면 이제 내 서비스 B가 iam이 회로를 열고 메시지를 보낼 수있을 때 "리소스 URI가 내려 가고 머지 않아 곧 나올 것입니다."B가 올라 오면 다시 처리 할 수 ​​있습니까? – maniker

+0

글쎄 거기서 질문을 다시 말했습니다. 내가 아는 한 Hystrix에는 당신이 찾고있는 기능이 없기 때문에 어쨌든 과장되어 있습니다. 서비스 B에서 신뢰할 수없는 가동 시간이 예상된다면 대신 메시지 중심의 서비스로 만드십시오. 성공하면 B가 A에게 알릴 수 있으며 UI 또는 동적으로 업데이트 할 수 있습니다. –