Я использую 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());