Как загрузить в контейнер MassTransit EndPoint в AbstractFacility - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть класс PersistenceFacility.Этот класс унаследовал «AbstractFacility» как «Castle.MicroKernel.Facilities».Интересно загрузить и установить в контейнер: IWindsorContainer.

public class PersistenceFacility: AbstractFacility
{
    protected override void Init()
    {

        ServiceIoC.Container.Register(Component.For<IBusControl>().LifeStyle.Singleton.UsingFactoryMethod(k =>
        {
            var busControl = Bus.Factory.CreateUsingRabbitMq(config =>
            {
                config.Host(new Uri("blabla"), host =>
                {
                    host.Username("guest");
                    host.Password("guest");
                });

                config.ReceiveEndpoint("", endpoint =>
                {
                    endpoint.EnableMessageScope();
                    // Above method works but it is deprecated, instead below method should be used to get Consumer from container.
                    //endPoint.Consumer<YourConsumer>(container.Kernel);
                });
            });

            return busControl;

        }).LifeStyle.Singleton.Named("XXXMassTransitRMQ"));

}

// класс установщика

public class PersistenceInstaller : IWindsorInstaller
{
    public void Install(IWindsorContainer container, IConfigurationStore store)
    {
        container?.AddFacility<PersistenceFacility>();
    }
}

// UOW Class

 public class UnitOfWork
{
     internal static IBusControl MassTransitRmqControl => ServiceIoC.Container?.Resolve<IBusControl>("XXXMassTransitRMQ");

}

1 Ответ

0 голосов
/ 14 февраля 2019

Во-первых, я хотел бы рассмотреть возможность перехода на новую поддержку контейнера для Windsor, как указано в документации .

. Вы можете увидеть, как MassTransit регистрирует компоненты с помощью Windsor, посмотрев на конфигурация .

Я не уверен, что абстрактное средство - это путь, учитывая подход, взятый по ссылкам, указанным выше.

...