Можно ли автоматически подписаться на обработанные сообщения, используя rebus.autofac - PullRequest
0 голосов
/ 07 июля 2019

Я использую rebus over SQL server и соединяю вещи с Autofac с помощью библиотеки rebus.autofac.У меня были вещи, работающие с моей локальной базой данных, но когда я перешел на использование сервера dev, я обнаружил, что сообщения не поступали.

При сравнении моей локальной базы данных и базы данных сервера кажется, что таблица подписок пуста насервер, но заселенный на мой локальный.Я не помню, чтобы вызывал «подписаться» локально, а мой существующий код этого не делает, но я должен был это сделать в прошлом.

Есть ли способ получить регистрацию обработчиков, чтобы также настроитьподписка на обработанное сообщение?Или я должен сделать это вручную?

Потенциально я мог бы сканировать сборку для каждой реализации "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());
...