等待 ReBus 事件处理程序
Wait for ReBus event handler
Rebus 中是否有任何机制允许指定在特定处理程序处理消息后调用的操作?也就是说,回调?
我这样注册 hansler:
serviceCollection.AutoRegisterHandlersFromAssemblyOf<Handler1>()
serviceCollection.AddRebus(....);
var serviceProvider = serviceCollection.BuildProvider();
serviceProvider.UseRebus();
public class Handler1 : IHandleMessages<Message1>
{
public Task Handle(Message1 message)
{
Console.WriteLine($"Handler1 received : {message}");
return Task.CompletedTask;
}
}
现在,我想做这样的事情:
serviceProvider.GetService<IBus>(); //or whatever needed
//wait 2000ms until Handler1 handles Message1 with specific ID
await bus.WaitUntilHandled<Handler1, Message1>(
message => message.Id = id,
new TaskCancellationSource(2000));
Rebus 的 built-in 扩展机制(针对 the message pipelines) lets you do almost anything you want to do, but in your case I think it would be easier to pull in Rebus.Events 并执行如下操作:
Configure.With(...)
.(...)
.Events(e =>
{
e.AfterMessageHandled += (bus, headers, message, context, args) =>
{
// do your thing in here
};
});
Rebus 中是否有任何机制允许指定在特定处理程序处理消息后调用的操作?也就是说,回调?
我这样注册 hansler:
serviceCollection.AutoRegisterHandlersFromAssemblyOf<Handler1>()
serviceCollection.AddRebus(....);
var serviceProvider = serviceCollection.BuildProvider();
serviceProvider.UseRebus();
public class Handler1 : IHandleMessages<Message1>
{
public Task Handle(Message1 message)
{
Console.WriteLine($"Handler1 received : {message}");
return Task.CompletedTask;
}
}
现在,我想做这样的事情:
serviceProvider.GetService<IBus>(); //or whatever needed
//wait 2000ms until Handler1 handles Message1 with specific ID
await bus.WaitUntilHandled<Handler1, Message1>(
message => message.Id = id,
new TaskCancellationSource(2000));
Rebus 的 built-in 扩展机制(针对 the message pipelines) lets you do almost anything you want to do, but in your case I think it would be easier to pull in Rebus.Events 并执行如下操作:
Configure.With(...)
.(...)
.Events(e =>
{
e.AfterMessageHandled += (bus, headers, message, context, args) =>
{
// do your thing in here
};
});