2017-11-25 22 views
0

작업 (예 : 메일 전송)을 대기열에 넣거나 예약하려고합니다. 여기에 시행 착오 과정에서 관찰 한 내용이 있습니다 :기본 대기열을 사용할 때 유형에 메소드가 없습니다.

  • 개발 환경과 생산 환경에서는 동일한 redis server를 사용하고 있습니다. Redis 구성은 동일하며 양측은 하나의 대기열 (default) 만 사용합니다. 따라서 다른 개발자가 코드를 디버깅 할 때 기본 큐를 수신하는 서버가됩니다.
  • 최근에 내 컴퓨터에서 개발하고 디버깅 한 작업을 대기열에 추가하거나 예약하려고하면 실행되지 않고 '재시도'섹션에 표시됩니다. 메서드가 단순히 발견되지 않습니다. 10 회 재시도 후에는 실패합니다. Startup.cs에
  • 내가 새로운 큐 (예 : 테스트)를 소개 할 때 (그건 그렇고, 내가. Enqueue<T>Schedule<T> 방법을 사용하고 있습니다), 그리고 EnqueuedState("test")와 큐의 이름을 BackgroundJobClient으로 새 작업을 대기열 및 지정, 그것은 바로 실행 .

작업 (기능)과 대기열 간의 관계를 알지 못했습니다. 누군가가 "default"대기열에서 실행될 때 내 작업이 실패하는 이유와 다른 대기열에서 실행될 때 왜 성공했는지 설명 할 수 있습니까?

또한 누군가 내가 왜 작업을 실행하려고 할 때 "방법을 찾을 수 없음"문제에 직면했는지 설명 할 수 있습니까?

나는이 문제들에 대한 추론을하기보다는 진정한 이유를 배우기 때문에이 질문을하고 있습니다.

답변

0

이 대답한다면 모르겠지만, 난 당신이 Schedule (또는 반복 작업)을 사용할 때

  • 큐 이름은 지원이 arent 몇 가지 문제점과 같은 발견하지, 경우에만 당신에게 직접 Enqueue을 (사용자 정의 사용자가이를 지원하는 시스템을 작성하지 않는 한). See this이지만 오래되었지만 여전히 유효해야합니다.

  • 다른 종류의 작업을 관리하기 위해 hangfire를 실행하는 여러 서비스가있는 경우 각자 다른 데이터를 저장할 수있는 다른 hangfire 데이터베이스를 제공해야합니다. 동일한 데이터베이스에 모두 배치하면 작업이 필요할 때 start HF는 큐 이름을 지정하지 않는 한 위의 명령을 사용하여 기본 큐를 검색하여 실행합니다.

  • 그러나 각 서비스에는 기본 대기열이 있고 어떤 것이 올바른지에 대한 표시가 없습니다 ... 그래서 HF는 다른 서비스의 서버에서 실행하려고 시도 할 수 있습니다. 올바른 코드베이스 인 (again,see this)에 연결되어 있지 않아 작업이 부르는 작업을 한편, 큐의 이름을 지정하고 그 이름이 올바른 코드에 '연결된'서버에만있는 경우 HF는 해당 큐에서 작업을 실행합니다 (다시 스케쥴하지 않는 한) , 무엇을 필요로하는지 찾아 모든이 조금 도움이 될 수 있습니다

희망 작동합니다