我们知道Rebus除了提供熟悉的基于类型的路由之外,还提供基于主题的路由,尽管我们被告知基于类型的路由遵循相同的原理。 但就我而言,不幸的是,我还没有看到一个很好的示例,说明如何创建一个处理程序来处理发布到特定主题的消息。
假设我按如下方式发布消息
var message=new Student { StudentID=90008,FirstName="Chilipo",LastName="Mjengo" };
await bus.Advanced.Topics.Publish("rebus_example_topic", message);
在另一个端点中,我已按如下所示订阅了该主题
await bus.Advanced.Topics.Subscribe("rebus_example_topic");
我的兴趣是想知道如何实现用于处理发布到rebus_example_topic的消息的处理程序。
致谢
答案 0 :(得分:1)
这很简单,实际上writing编写消息处理程序的首选方法是实现IHandleMessage<TMessage>
,其中TMessage
是您的消息类型。
在您的情况下
public class StudentHandler : IHandleMessages<Student>
{
public async Task Handle(Student message)
{
// handle your message in here
}
}
然后如何激活消息处理程序取决于您使用的是哪个处理程序激活器。 “ handler activator”是用于实例化消息处理程序的,因此您只需要在其中注册您的处理程序即可将其提供给Rebus。
某些容器集成甚至以注册扩展名的形式附带了其他帮助,例如如果您使用的是Autofac,则可以这样注册处理程序:
containerBuilder.RegisterHandler<StudentHandler>();