구독자를 사용/사용 중지 할 수있는 기능이 있습니다. 메시지는 전송 될 수 있지만 구독자가 해제 된 경우에는 대기열에서 메시지를 처리하지 않는 것이 좋습니다. 다시 켜면 대기열에서 메시지 처리를 시작합니다.구독자 일시 중지
필자는 pub/sub 및 요청/답장 예제를 살펴보고 Rebus의 소스 코드를 가져 와서이 질문에 대답 할 수있는 기능을 찾아 보았습니다. Defer 메서드는 메시지 전송에 시간 지연을 적용 할 수 있지만 필요한 지연은 구독자를 켜거나 끄는 것을 기반으로합니다.
주요 질문은 구독자를 일시 중지하는 몇 가지 방법입니까?
(한 가입자, 모든 가입자, 그래서 나는 SetWorkerThreads (0) 기술이 작동합니다 생각하지 않습니다) 대답은과 같이 _activator.Bus.Advanced.Workers.SetNumberOfWorkers(0)
을 사용
UPDATE :
public static class Subscriber1
{
private static BuiltinHandlerActivator _activator;
public static void Start(ILogger logger)
{
_activator = new BuiltinHandlerActivator();
_activator.Register(() => new Subscriber1MessageHandler());
Configure.With(_activator)
.Transport(t => t.UseMsmq("subscriber1"))
.Logging(l => l.Serilog(logger))
.Routing(r => r.TypeBased().Map<Subscriber1Message>("thepublisher"))
.Start();
_activator.Bus.Subscribe<Subscriber1Message>().Wait();
}
public static void Pause()
{
_activator.Bus.Advanced.Workers.SetNumberOfWorkers(0);
}
public static void Resume()
{
_activator.Bus.Advanced.Workers.SetNumberOfWorkers(1);
}
}
구독자는 어떻게 배포됩니까? Windows 서비스입니까? – mookid8000
IIS의 웹 API 응용 프로그램에 게시자와 구독자가 동일한 IIS 프로세스에서 실행되고 있습니다. –