/// <summary>
        /// Select rabbitmq as transport for the service bus.
        /// </summary>
        /// <param name="provider"></param>
        /// <param name="queueConfigModel"></param>
        /// <param name="registrationAction"></param>
        /// <returns></returns>
        public static IBusControl ConfigureBusService(IServiceProvider provider, QueueConfigModel queueConfigModel, Action <IRabbitMqBusFactoryConfigurator, IRabbitMqHost> registrationAction = null)
        {
            return(MassTransit.Bus.Factory.CreateUsingRabbitMq(cfg =>
            {
                var host = cfg.Host(new Uri(queueConfigModel.HostName), hst =>
                {
                    hst.Username(queueConfigModel.UserName);
                    hst.Password(queueConfigModel.Password);
                });

                cfg.ConfigureEndpoints(provider);

                registrationAction?.Invoke(cfg, host);
            }));
        }
        public static QueueConfigModel GetQueueConfig(this IConfiguration configuration)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            var serviceConfig = new QueueConfigModel
            {
                HostName  = configuration.GetValue <string>("RabbitMQ:HostName"),
                UserName  = configuration.GetValue <string>("RabbitMQ:UserName"),
                Password  = configuration.GetValue <string>("RabbitMQ:Password"),
                QueueName = configuration.GetValue <string>("RabbitMQ:QueueName")
            };

            return(serviceConfig);
        }
        public static IServiceCollection AddRabbitMQConsumerServices <T>(this IServiceCollection services, QueueConfigModel queueConfigModel) where T : class, IConsumer
        {
            services.AddMassTransit(cfg =>
            {
                cfg.AddConsumer <T>();
                cfg.AddBus(provider => BusService.ConfigureBusService(provider, queueConfigModel, (cfg, host) =>
                {
                    cfg.ReceiveEndpoint(queueConfigModel.QueueName, ep =>
                    {
                        ep.ConfigureConsumer <T>(provider);
                    });
                }));
            });
            services.AddMassTransitHostedService();

            return(services);
        }
        public static IServiceCollection AddRabbitMQServices(this IServiceCollection services, QueueConfigModel queueConfigModel)
        {
            services.AddMassTransit(cfg =>
            {
                cfg.AddBus(provider => BusService.ConfigureBusService(provider, queueConfigModel));
            });

            return(services);
        }
Exemple #5
0
 public QueueMessageService(QueueConfigModel queueConfig, ISendEndpointProvider sendEndpointProvider)
 {
     _queueConfig          = queueConfig;
     _sendEndpointProvider = sendEndpointProvider;
 }