我一直在尝试找出是否有任何方法可以阻止工作人员从 Rebus 队列中获取更多工作/消息?我希望能够通过我的 GUI“禁用”一个工作人员,以便它完成当前正在处理的工作(如果有的话),然后停止接受更多工作。然后,如果我希望它再次开始工作,我会通过 gui 发出信号。
我的 Rebus 工人设置如下所示:
private void SetupRebus(int numberOfWorkers, string messageName)
{
_adapter = new BuiltinContainerAdapter();
Configure.With(_adapter)
.Logging(l => l.Log4Net())
.Transport(t => t.UseSqlServer(_connectionString, _inputQueue, "error")
.EnsureTableIsCreated())
.Events(x => x.AfterMessage += ((bus, exception, message) => SendWorkerFinishedJob(exception, message)))
.Events(x => x.BeforeMessage += (bus, message) => SignalWorkerStartedJob(message))
.Behavior(x => x.SetMaxRetriesFor<Exception>(0))
.CreateBus().Start(numberOfWorkers);
Log.Info(string.Format("Starting to listen for messages of type {0} from queue {1} queue in {2}", messageName, _inputQueue, _connectionString));
}