Beispiel #1
0
 /// <summary>
 /// Конфигурация фабрики подключений.
 /// </summary>
 /// <param name="connectionFactory"> Фабрика подключений. </param>
 /// <param name="config"> Конфигурация. </param>
 public static void Configure(this ConnectionFactory connectionFactory, QueuesConfig config)
 {
     connectionFactory.UserName                 = config.UserName;
     connectionFactory.Password                 = config.Password;
     connectionFactory.VirtualHost              = config.VirtualHost;
     connectionFactory.HostName                 = config.HostName;
     connectionFactory.Port                     = config.Port;
     connectionFactory.RequestedHeartbeat       = TimeSpan.FromSeconds(30);
     connectionFactory.AutomaticRecoveryEnabled = true;
 }
Beispiel #2
0
 /// <summary>
 /// Сконфигурировать модель.
 /// </summary>
 /// <param name="model"> Модель данных. </param>
 /// <param name="config"> Конфигурация. </param>
 public static void Configure(this IModel model, QueuesConfig config)
 {
     if (config.PrefetchCount.HasValue)
     {
         model.BasicQos(0, config.PrefetchCount.Value, false);
     }
     else
     {
         model.BasicQos(0, 1, false);
     }
 }
Beispiel #3
0
 /// <summary>
 /// Конфигурация фабрики подключений.
 /// </summary>
 /// <param name="connectionFactory"> Фабрика подключений. </param>
 /// <param name="config"> Конфигурация. </param>
 public static void Configure(this ConnectionFactory connectionFactory, QueuesConfig config)
 {
     connectionFactory.UserName                 = config.UserName;
     connectionFactory.Password                 = config.Password;
     connectionFactory.VirtualHost              = config.VirtualHost;
     connectionFactory.Protocol                 = Protocols.DefaultProtocol;
     connectionFactory.HostName                 = config.HostName;
     connectionFactory.Port                     = config.Port;
     connectionFactory.RequestedHeartbeat       = 30;
     connectionFactory.AutomaticRecoveryEnabled = true;
 }
        /// <summary>
        /// Клиент RabbitMq.
        /// </summary>
        /// <param name="configuration"> Конфигурация клиента. </param>
        /// <param name="dispatcher"> Диспетчер сообщений. </param>
        /// <param name="logger"> Логгер. </param>
        /// <param name="serializer"> Сериализатор сообщений. </param>
        public RabbitClientBase(QueuesConfig configuration, IMsgDispatcher dispatcher, ILogger <IMessageQueueClient> logger, IMessageSerializer serializer)
        {
            Configuration = configuration ?? throw new ArgumentNullException($"Конфигурация клиента очереди не найдена или содержит ошибки");
            Dispatcher    = dispatcher ?? throw new ArgumentNullException(nameof(dispatcher));
            Logger        = logger ?? throw new ArgumentException(nameof(logger));
            Serializer    = serializer ?? throw new ArgumentNullException(nameof(serializer));

            DeliveryCount        = new Dictionary <ulong, int>();
            RegistratedConsumers = new Dictionary <string, EventingBasicConsumer>();
            ConnectionFactory    = new ConnectionFactory
            {
                RequestedHeartbeat = 5,
            };
        }
Beispiel #5
0
        /// <summary>
        /// Подготовить модели поведения.
        /// </summary>
        /// <param name="configuration">Конфигурация очереди.</param>
        private void PrepareBehaviours(QueuesConfig configuration)
        {
            BehavioursDict = new Dictionary <MessageProcessPhase, List <IMessageProcessBehaviuor> >();

            // Разобрать модели поведения если они имеются
            if (configuration.BehaviourConfigurations != null && configuration.BehaviourConfigurations.Any())
            {
                foreach (var bc in configuration.BehaviourConfigurations)
                {
                    try
                    {
                        var behaviour = JsonConvert.DeserializeObject <BehaviourBase>(
                            bc.Configuration,
                            new JsonSerializerSettings
                        {
                            TypeNameHandling = TypeNameHandling.Auto,
                        });

                        List <IMessageProcessBehaviuor> behaviours;
                        if (!BehavioursDict.TryGetValue(behaviour.ProcessPhase, out behaviours))
                        {
                            behaviours = new List <IMessageProcessBehaviuor>();
                            BehavioursDict.Add(behaviour.ProcessPhase, behaviours);
                        }

                        behaviour.SetClient(this);
                        behaviours.Add(behaviour);
                    }
                    catch (Exception ex)
                    {
                        var msg = $"Ошибка во время разбора модели поведения клиента [{bc.Configuration}]";
                        Logger.LogError(ex, msg);
                        throw new Exception(msg, ex);
                    }
                }
            }
        }
Beispiel #6
0
 /// <summary>
 /// Сконфигурировать модель.
 /// </summary>
 /// <param name="model"> Модель данных. </param>
 /// <param name="config"> Конфигурация. </param>
 public static void Configure(this IModel model, QueuesConfig config)
 {
     model.BasicQos(0, 1, false);
 }