rebus - 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 的消息的处理程序。
问候
解决方案
这很简单,实际上编写消息处理程序的首选方式是实现IHandleMessage<TMessage>
,TMessage
您的消息类型在哪里。
在你的情况下,那将是
public class StudentHandler : IHandleMessages<Student>
{
public async Task Handle(Student message)
{
// handle your message in here
}
}
然后如何激活消息处理程序取决于您使用的处理程序激活器。“处理程序激活器”是您用来实例化消息处理程序的工具,因此您只需在其中注册处理程序以使其可用于 Rebus。
一些容器集成甚至以注册扩展的形式提供额外的帮助,例如,如果你使用 Autofac,你可以像这样注册你的处理程序:
containerBuilder.RegisterHandler<StudentHandler>();
推荐阅读
- qt - Qt3d QML: how to add Text as overlay to a standard example
- python - 文件只写在我的程序末尾
- html - 侧边栏工具提示未在锚点悬停时显示
- android - 如何在 firebase 数据库中获取所有儿童的搜索结果?
- mysql - 使用 SSMS 连接到使用 MySQL 命令行客户端创建的数据库
- datastage - 将十进制转换为时间戳问题
- android - Admob 广告未在真实设备中显示,尽管它在模拟器上运行
- java - 什么是监视器,它是如何在 JAVA 中实现的?
- zsh - theme_precmd:1: vcs_info: 未找到 Oh-my-zsh 的函数定义文件
- python - Qslider 不会在 PyQt5 中传递参数