是否可以使用rebus.autofac

时间:2019-07-07 14:40:20

标签: autofac rebus

我正在通过SQL Server使用rebus,并使用rebus.autofac库与Autofac进行连接。我在使用本地数据库时遇到了麻烦,但是当我转向使用开发服务器时,发现消息没有通过。

将我的本地数据库和服务器数据库进行比较,似乎预订表在服务器上为空,但在我的本地上已填充。我不记得在本地调用“订阅”了,我的现有代码也没有,但是我必须过去做过。

是否有一种方法可以获取处理程序的注册,从而还可以设置已处理消息的订阅?还是我必须手动进行?

可能我可以扫描程序集的“ IHandleMessages”的每个实现,然后在构建总线时对其进行注册,但是我该如何参与总线的构建?

下面是创建容器后手动扫描的示例:

var bus = container.Resolve<IBus>();
Task.WaitAll(container
    .ComponentRegistry
    .Registrations
    .SelectMany(reg => reg.Activator.LimitType.GetInterfaces())
    .Where(t => t.IsGenericType && t.GetGenericTypeDefinition() == typeof(IHandleMessages<>))
    .Select(t => t.GenericTypeArguments[0])
    .Distinct()
    .Select(msg => bus.Subscribe(msg)).ToArray());

0 个答案:

没有答案