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); } }
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); }
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; }
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); } }
private void CreateControlChannel(string appName, RabbitMqBackendQueueConfig options) { var newChannel = new RabbitMqProducer(_primaryApplicationChannel, appName, options); _controlChannels.Add(appName, newChannel); }