2016-09-23 6 views
1

나는 여러 대의 서버가 여러 대의 컴퓨터에서 오랫동안 작업을 수행하는 응용 프로그램에서 작업하고 있습니다. hangfire/topshelf로 작성된 컴퓨터에서 실행중인 Windows 서비스가 있습니다. 시스템 당 한 번에 하나의 작업 만 실행할 수 있습니다. 또한 정기적으로 상태 확인 및 작업을 수행하고 싶습니다. 각 서버의 이므로 작업으로 큐에 대기시킬 수는 없습니다.여러 서버가있는 Hangfire

hangfire에서이를 수행 할 방법이 있습니까? 또한 이전 작업과 동일한 서버에 후속 작업을 보내는 방법이 있습니까?

ADD-ON : 하나의 가능성이 다른 hangfire 레이어를 추가하는 것입니다 : 각 서비스가 자신의 DB를 가진 hangfire 클라이언트로 만들고 서비스를 제공하고 반복 작업을 예약하십시오. 확장 및 서버 추가시.

+0

Hangfire는 대기열로 구현되며 작업 당 하나의 서버 만 할당하므로 걱정할 필요가 없습니다. 그러나 특정 서버 AFAIK에 친 화성을 설정할 수있는 능력은 없습니다. 분산 캐시 또는 키/값 레이어를 사용하여 앱 내에서 조정해야합니다. – HackedByChinese

+0

@HackedByChinese : 작업 당 단 하나의 서버라는 것을 알고 있습니다. 다른 방법으로 서버 당 하나의 작업이 필요합니다. 내가 WorkerCount로 할 수있는 일. 그러나 서버에 정리 작업을 수행하기 때문에 모든 서버에서 주기적으로 실행하려는 작업이 있습니다 ... – EluciusFTW

답변

0

작업이 각 서버에서 예약 된 작업을 실행하는 것이라면 가장 좋은 방법은 직접 구현하는 것입니다. Hangfire는 이벤트 처리 만 지원하고 명령 처리 만 지원합니다. 제 생각에, 당신은 Hangfire 가능성의 요점에 도달했고 더 강력하고 일반적인 도구로 전환해야합니다.

이벤트 및 처리를 위해 RabbitMQ와 같은 다른 시스템을 사용할 수 있습니다. 이벤트 생성기를 지정하고이 이벤트에 대한 모든 시스템을 등록하십시오.

+0

인터넷을 통해 이벤트를 제출/듣고 싶습니까? 기계가 로컬 네트워크에 없습니다! – EluciusFTW

+0

그들은 어디 에나있을 수 있습니다. 이벤트에 대한 개념과 처리 방법은 Rabbit에서 구현됩니다. 예, 인터넷을 통해 구독 할 수 있습니다. 아래 내용을 읽어보십시오. https://www.rabbitmq.com/tutorials/tutorial-three-dotnet.html – eocron

+0

현재 다른 외부 도구를 구현하고 싶지 않지만 제안 해 주셔서 감사합니다! 내가 총소리로 아무 것도 발견하지 못한다면, 나는 강요 당할지도 모른다. – EluciusFTW

0

나는 이것이 다소 늦다는 것을 알고 있지만, 우리가 이런 종류의 일을 처리하는 방법은 간단한 콘솔 응용 프로그램을 작성하고 Windows Task Scheduler로 일정을 잡는 것입니다.