コード例 #1
0
        public RabbitMqProvider(RabbitMqBackendConfig config)
        {
            _config = config;
            var amqpUri = config.AmqpUri;

            _appQueueOptions = config.ApplicationQueueConfig;


            _dialogueQueueOptions = config.DialogueQueueConfig;

            _rmqConnection = new ConnectionFactory
            {
                uri = new Uri(amqpUri),
                RequestedHeartbeat = (ushort)config.Heartbeat
            };

            // Create the primary application channel
            // Used for all subsiquent requests to AMQP
            _primaryApplicationChannel = _rmqConnection.CreateConnection();
            _primaryApplicationChannel.ConnectionShutdown += _primaryApplicationChannel_ConnectionShutdown;

            _controlChannels = new Dictionary <string, RabbitMqProducer>();
            _activeDialogues = new List <RabbitMqDialogue>();

            if (config.CheckForClosedDialogues)
            {
                _dialogueMonitor = new Timer(CheckDialogues, null, 5000, 5000);
            }
        }
コード例 #2
0
        public RabbitMqConsumer(IConnection connection, string queueName, RabbitMqBackendQueueConfig options)
        {
            _options   = options;
            Connection = connection;
            QueueName  = queueName;

            CreateModel();
            Model.QueueDeclare(QueueName, options.Durable, options.Exclusive, options.AutoDelete, null);
        }
コード例 #3
0
        public RabbitMqProducer(IConnection connection, string queueName, RabbitMqBackendQueueConfig options)
        {
            Connection = connection;
            QueueName  = queueName;

            CreateModel();
            var args = new Dictionary <string, object>();

            if (options.TTL > -1)
            {
                args["x-message-ttl"] = options.TTL;
            }
            Model.QueueDeclare(QueueName, options.Durable, options.Exclusive, options.AutoDelete, args);

            // Handle Unroutable Messages
            Model.BasicReturn += Model_BasicReturn;
        }
コード例 #4
0
        public RabbitMqProvider(RabbitMqBackendConfig config)
        {
            _config = config;
            var amqpUri = config.AmqpUri;

            _appQueueOptions = config.ApplicationQueueConfig;


            _dialogueQueueOptions = config.DialogueQueueConfig;

            _rmqConnection = new ConnectionFactory
            {
                Uri = new Uri(amqpUri),
#if NETSTANDARD
                RequestedHeartbeat = TimeSpan.FromSeconds(config.Heartbeat),
#else
                RequestedHeartbeat = (ushort)config.Heartbeat,
#endif
                AutomaticRecoveryEnabled = true,
                TopologyRecoveryEnabled  = true,
                NetworkRecoveryInterval  = TimeSpan.FromSeconds(1)
            };

            // Create the primary application channel
            // Used for all subsiquent requests to AMQP
            _primaryApplicationChannel = _rmqConnection.CreateConnection();
            _primaryApplicationChannel.ConnectionShutdown += _primaryApplicationChannel_ConnectionShutdown;

            _controlChannels = new Dictionary <string, RabbitMqProducer>();
            _activeDialogues = new List <RabbitMqDialogue>();

            if (config.CheckForClosedDialogues)
            {
                _dialogueMonitor = new Timer(CheckDialogues, null, 5000, 5000);
            }
        }
コード例 #5
0
        private void CreateControlChannel(string appName, RabbitMqBackendQueueConfig options)
        {
            var newChannel = new RabbitMqProducer(_primaryApplicationChannel, appName, options);

            _controlChannels.Add(appName, newChannel);
        }