Rebus主题的事件处理程序

时间:2019-10-25 08:33:39

标签: rebus

我们知道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的消息的处理程序。

致谢

1 个答案:

答案 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>();