/// <summary> /// Initializes a new instance of the <see cref="RMQPublisherText"/> class. /// </summary> /// <param name="connectionFactory">The connection factory.</param> /// <param name="connectionSettings">The connection settings.</param> /// <param name="exchangeSettings">The exchange settings.</param> public RMQPublisherText( IRMQConnectionFactory connectionFactory, RMQConnectionSettings connectionSettings, RMQExchangeSettings exchangeSettings) : base(connectionFactory, connectionSettings, exchangeSettings) { }
/// <summary> /// Creates the byte. /// </summary> /// <param name="connectionSettings">The connection settings.</param> /// <param name="exchangeSettings">The exchange settings.</param> /// <param name="queueSettings">The queue settings.</param> /// <returns></returns> public IRMQPublisherByte CreateByte( RMQConnectionSettings connectionSettings, RMQExchangeSettings exchangeSettings, RMQQueueSettings queueSettings) { return(new RMQPublisherByte(_connectionFactory, connectionSettings, exchangeSettings, queueSettings)); }
/// <summary> /// Creates the text. /// </summary> /// <param name="connectionSettings">The connection settings.</param> /// <param name="exchangeSettings">The exchange settings.</param> /// <param name="queueSettings">The queue settings.</param> /// <returns></returns> public IRMQConsumerText CreateText( RMQConnectionSettings connectionSettings, RMQExchangeSettings exchangeSettings, RMQQueueSettings queueSettings) { return(new RMQSubscriberText(_connectionFactory, connectionSettings, exchangeSettings, queueSettings)); }
public RMQSubscriberText( IRMQConnectionFactory connectionFactory, RMQConnectionSettings connectionSettings, RMQExchangeSettings exchangeSettings, RMQQueueSettings queueSettings) : base(connectionFactory, connectionSettings, exchangeSettings, queueSettings) { }
/// <summary> /// Initializes a new instance of the <see cref="RMQPublisher"/> class. /// </summary> /// <param name="connectionFactory">The connection factory.</param> /// <param name="connectionSettings">The connection settings.</param> /// <param name="exchangeSettings">The exchange settings.</param> /// <param name="queueSettings">The queue settings.</param> public RMQPublisher( IRMQConnectionFactory connectionFactory, RMQConnectionSettings connectionSettings, RMQExchangeSettings exchangeSettings, RMQQueueSettings queueSettings = null) : base(connectionFactory, connectionSettings, exchangeSettings, queueSettings) { }
/// <summary> /// Initializes a new instance of the <see cref="RMQSubscriber"/> class. /// </summary> /// <param name="connectionFactory">The connection factory.</param> /// <param name="connectionSettings">The connection settings.</param> /// <param name="exchangeSettings">The exchange settings.</param> /// <param name="queueSettings">The queue settings.</param> public RMQSubscriber( IRMQConnectionFactory connectionFactory, RMQConnectionSettings connectionSettings, RMQExchangeSettings exchangeSettings, RMQQueueSettings queueSettings) : base(connectionFactory, connectionSettings, exchangeSettings, queueSettings) { Mode = ConsumerMode.OnNoMessage_Timeout; }
public RMQPublisherSubscriber( IRMQConnectionFactory connectionFactory, RMQConnectionSettings connectionSettings, RMQExchangeSettings exchangeSettings, RMQQueueSettings queueSettings = null) : base(connectionFactory, connectionSettings) { _exchangeSettings = exchangeSettings; _queueSettings = queueSettings; }
/// <summary> /// Initializes a new instance of the <see cref="RMQObjectPoolAsync"/> class. /// </summary> /// <param name="factory">The factory.</param> /// <param name="instanceType">Type of the instance.</param> /// <param name="connection">The connection.</param> /// <param name="destination">The destination.</param> /// <param name="exchange">The exchange.</param> /// <param name="maxGrowSize">Maximum size of the grow.</param> public RMQObjectPoolAsync( IRMQSenderReceiverFactory factory, Type instanceType, RMQConnectionSettings connection, RMQQueueSettings destination, RMQExchangeSettings exchange, int maxGrowSize) : base(0, maxGrowSize) { _factory = factory; _instanceType = instanceType; _connection = connection; _destination = destination; _exchange = exchange; }
/// <summary> /// Creates the text. /// </summary> /// <param name="connectionSettings">The connection settings.</param> /// <param name="exchangeSettings">The exchange settings.</param> /// <returns></returns> public IRMQPublisherText CreateText( RMQConnectionSettings connectionSettings, RMQExchangeSettings exchangeSettings) { return(new RMQPublisherText(_connectionFactory, connectionSettings, exchangeSettings)); }
/// <summary> /// Initializes a new instance of the <see cref="RMQConfigurationManager"/> class. /// </summary> /// <param name="configPath">The configuration path.</param> public RMQConfigurationManager(string configPath = null) { Settings = new RMQConfigSettings(); if (configPath == null) { var xmlFile = $"{AppDomain.CurrentDomain.BaseDirectory}RMQSettings.config"; var jsonFile = $"{AppDomain.CurrentDomain.BaseDirectory}RMQSettings.json"; if (File.Exists(xmlFile)) { configPath = xmlFile; } else if (File.Exists(jsonFile)) { configPath = jsonFile; } } if (configPath != null) { if (Path.GetExtension(configPath).ToLower() == ".json") { var json = File.ReadAllText(configPath); Settings = JsonConvert.DeserializeObject <RMQConfigSettings>(json); } else // XML legacy { using (var configContainer = new ConfigContainer(configPath, "./rmqSettings")) { var configNode = configContainer.Node; var settingNodes = configNode.GetConfigNode($"./connectionSettings"); if (settingNodes != null) { foreach (var settingNode in settingNodes.GetConfigNodes(".")) { var connectionSettings = new RMQConnectionSettings(); Settings.Connections.Add(connectionSettings); connectionSettings.Name = settingNode.GetAttribute(".", "name", ""); connectionSettings.Username = settingNode.GetAttribute(".", "username", ""); connectionSettings.Password = settingNode.GetAttribute(".", "password", ""); connectionSettings.VirtualHost = settingNode.GetAttribute(".", "virtualhost", "/"); connectionSettings.Uri = settingNode.GetAttribute(".", "uri", "amqp://*****:*****@name='{exchangeSettings.Name}']/arguments"); if (argsNode != null) { var attributes = argsNode.GetAttributes(); foreach (var key in attributes.AllKeys) { exchangeSettings.Arguments[key] = attributes[key]; } } } } var queueNodes = configNode.GetConfigNode($"./queue"); if (queueNodes != null) { foreach (var queueNode in queueNodes.GetConfigNodes(".")) { var queueSettings = new RMQQueueSettings(queueNode.GetAttribute(".", "name", "")); Settings.Queues.Add(queueSettings); queueSettings.QueueName = queueNode.GetAttribute(".", "queueName", ""); queueSettings.Durable = queueNode.GetAttribute(".", "durable", "true") == "true"; queueSettings.Exclusive = queueNode.GetAttribute(".", "exclusive", "false") == "true"; queueSettings.AutoDelete = queueNode.GetAttribute(".", "autoDelete", "false") == "true"; queueSettings.Persistent = queueNode.GetAttribute(".", "persistent", "true") == "true"; var routingKeys = queueNode.GetAttribute(".", "routingKeys", ""); foreach (var key in routingKeys.Trim().Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)) { queueSettings.RoutingKeys.Add(key); } var argsNode = configNode.GetConfigNode($"./queue[@name='{queueSettings.Name}']/arguments"); if (argsNode != null) { var attributes = argsNode.GetAttributes(); foreach (var key in attributes.AllKeys) { queueSettings.Arguments[key] = attributes[key]; } } // get consumer info if it exists var consumerNode = configNode.GetConfigNode($"./queue[@name='{queueSettings.Name}']/consumer"); if (consumerNode != null) { queueSettings.ConsumerSettings.Tag = queueNode.GetAttribute(".", "tag", Guid.NewGuid().ToString()); queueSettings.ConsumerSettings.Exclusive = queueNode.GetAttribute(".", "exclusive", "false") == "true"; queueSettings.ConsumerSettings.NoAck = queueNode.GetAttribute(".", "noAck", "true") == "true"; queueSettings.ConsumerSettings.NoLocal = queueNode.GetAttribute(".", "noLocal", "true") == "true"; } } } } } } foreach (var connection in Settings.Connections) { foreach (var uri in connection.Uri.Trim().Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)) { connection.Endpoints.Add(uri); } } }
/// <summary> /// Creates the specified connection. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="connection">The connection.</param> /// <param name="exchange">The exchange.</param> /// <param name="destination">The destination.</param> /// <returns></returns> public T Create <T>(RMQConnectionSettings connection, RMQExchangeSettings exchange, RMQQueueSettings destination) where T : IMessageReceiverSender { return((T)Create(typeof(T), connection, exchange, destination)); }
/// <summary> /// Creates the specified type. /// </summary> /// <param name="type">The type.</param> /// <param name="connection">The connection.</param> /// <param name="exchange">The exchange.</param> /// <param name="destination">The destination.</param> /// <returns></returns> /// <exception cref="KeyNotFoundException"></exception> public IMessageReceiverSender Create(Type type, RMQConnectionSettings connection, RMQExchangeSettings exchange, RMQQueueSettings destination) { if (!_subInvokers.ContainsKey(type)) { throw new KeyNotFoundException($"The following type: '{type.Name}' is not supported."); } var invoker = _subInvokers[type]; return(invoker(connection, exchange, destination)); }