public static ConnectionFactory CreateConnectionFactory(RabbitMQConnectionSettings settings) { var connectionFactory = new ConnectionFactory { AutomaticRecoveryEnabled = true, HostName = settings.HostName, UserName = settings.UserName, Password = settings.Password, VirtualHost = settings.VirtualHost }; //Взял из реализации в masstransit if (settings.UseSsl) { connectionFactory.Ssl.Enabled = true; connectionFactory.Ssl.ServerName = string.Empty; connectionFactory.Ssl.CertPath = string.Empty; connectionFactory.Ssl.CertPassphrase = string.Empty; connectionFactory.Ssl.AcceptablePolicyErrors = SslPolicyErrors.RemoteCertificateChainErrors | SslPolicyErrors.RemoteCertificateNameMismatch; connectionFactory.Ssl.Version = SslProtocols.Tls12; } return(connectionFactory); }
public static void Main() { RabbitMQConnectionSettings connectionSettings = new RabbitMQConnectionSettings { HostName = "localhost", UserName = "******", Password = "******", VirtualHost = "/", UseSsl = false }; RabbitMQEventBusSettings rabbitMQEventBusSettings = new RabbitMQEventBusSettings { Application = "PrO", Service = "Analytics", ConnectionSettings = connectionSettings, RetryMessageProcessing = new RetryMessageProcessingSettings { QueueWaitingTime = 5000, TimeProcessInQueueSeconds = 1800, AttemptCount = 10 } }; ConnectionFactory factory = RabbitMQPersistentConnection.CreateConnectionFactory(connectionSettings); RabbitMQPersistentConnection rabbitMQPersistentConnection = new RabbitMQPersistentConnection(factory, rabbitMQEventBusSettings); try { if (rabbitMQPersistentConnection.TryConnect()) { using (var model = rabbitMQPersistentConnection.CreateModel()) { string exchangeName = "PrO_events"; model.ExchangeDeclare(exchange: exchangeName, type: ExchangeType.Topic, durable: true); string queueName = "EventCS_Listener"; model.QueueDeclare(queue: queueName, durable: true, exclusive: false, autoDelete: false, arguments: null); model.QueueBind(queue: queueName, exchange: exchangeName, routingKey: "#"); Console.WriteLine(" [*] Waiting for messages."); var consumer = new EventingBasicConsumer(model); consumer.Received += (model, ea) => { var body = ea.Body.ToArray(); var message = Encoding.UTF8.GetString(body); Console.WriteLine(" [x] {0}", message); }; model.BasicConsume(queue: queueName, autoAck: true, consumer: consumer); Console.WriteLine(" Press [enter] to exit."); Console.ReadLine(); } } } catch (Exception e) { Console.WriteLine(e.Message); } rabbitMQPersistentConnection.Dispose(); }