public void Constructor_Binds_RabbitMQ_Values() { var appsettings = new Dictionary <string, string>() { ["rabbitmq:client:server"] = "localhost", ["rabbitmq:client:port"] = "1234", ["rabbitmq:client:password"] = "******", ["rabbitmq:client:username"] = "******", ["rabbitmq:client:sslEnabled"] = "true" }; ConfigurationBuilder configurationBuilder = new ConfigurationBuilder(); configurationBuilder.AddInMemoryCollection(appsettings); var config = configurationBuilder.Build(); var sconfig = new RabbitMQProviderConnectorOptions(config); Assert.Equal("localhost", sconfig.Server); Assert.Equal(1234, sconfig.Port); Assert.Equal("password", sconfig.Password); Assert.Equal("username", sconfig.Username); Assert.Null(sconfig.Uri); Assert.True(sconfig.SslEnabled); Assert.Equal(RabbitMQProviderConnectorOptions.Default_SSLPort, sconfig.SslPort); }
QueueConnector() { var config = SteeltoeConfigurationManager.Instance.GetConfiguration(); Console.WriteLine($"Rabbit: {config.GetSection("VCAP_SERVICES").Value}"); //foreach (var child in config.GetChildren()) //{ // Console.WriteLine($"Path: {child.Path}; Key: {child.Key}; Value: {child.Value}"); //} var options = new RabbitMQProviderConnectorOptions(config.GetSection("VCAP_SERVICES")); Console.WriteLine($"Host: {options.Server}"); var factory = new ConnectionFactory { HostName = "192.168.8.36" /*options.Server*/, Password = "******" /*options.Password*/, Port = 5672 /*options.Port*/, //Uri = new Uri("amqp://*****:*****@192.168.8.36:5672/cf087b17-9714-4ec0-b7f9-4ecd6aadd593"/*options.Uri*/), UserName = "******" /*options.Username*/, VirtualHost = "cf087b17-9714-4ec0-b7f9-4ecd6aadd593" /*options.VirtualHost*/, }; _connection = factory.CreateConnection(nameof(RMQApp)); _channel = _connection.CreateModel(); _channel.QueueDeclare(QueueName, false, false, false, null); }
/// <summary> /// Adds RabbitMQ ConnectionFactory (as IConnectionFactory and ConnectionFactory) to your Autofac Container /// </summary> /// <param name="container">Your Autofac Container Builder</param> /// <param name="config">Application configuration</param> /// <param name="serviceName">Cloud Foundry service name binding</param> /// <returns>the RegistrationBuilder for (optional) additional configuration</returns> public static IRegistrationBuilder <object, SimpleActivatorData, SingleRegistrationStyle> RegisterRabbitMQConnection(this ContainerBuilder container, IConfiguration config, string serviceName = null) { if (container == null) { throw new ArgumentNullException(nameof(container)); } if (config == null) { throw new ArgumentNullException(nameof(config)); } Type rabbitMQInterfaceType = RabbitMQTypeLocator.IConnectionFactory; Type rabbitMQImplementationType = RabbitMQTypeLocator.ConnectionFactory; RabbitMQServiceInfo info = serviceName == null ? config.GetSingletonServiceInfo <RabbitMQServiceInfo>() : config.GetRequiredServiceInfo <RabbitMQServiceInfo>(serviceName); RabbitMQProviderConnectorOptions rabbitMQConfig = new RabbitMQProviderConnectorOptions(config); RabbitMQProviderConnectorFactory factory = new RabbitMQProviderConnectorFactory(info, rabbitMQConfig, rabbitMQImplementationType); container.Register(c => new RabbitMQHealthContributor(factory, c.ResolveOptional <ILogger <RabbitMQHealthContributor> >())).As <IHealthContributor>(); return(container.Register(c => factory.Create(null)).As(rabbitMQInterfaceType, rabbitMQImplementationType)); }
public void Constructor_ThrowsIfConfigNull() { RabbitMQProviderConnectorOptions config = null; RabbitMQServiceInfo si = null; var ex = Assert.Throws <ArgumentNullException>(() => new RabbitMQProviderConnectorFactory(si, config, typeof(ConnectionFactory))); Assert.Contains(nameof(config), ex.Message); }
public void Is_Connected_Returns_Up_Status() { var rabbitMQImplementationType = RabbitMQTypeLocator.ConnectionFactory; var rabbitMQConfig = new RabbitMQProviderConnectorOptions(); var sInfo = new RabbitMQServiceInfo("MyId", "amqp://localhost:5672"); var logrFactory = new LoggerFactory(); var connFactory = new RabbitMQProviderConnectorFactory(sInfo, rabbitMQConfig, rabbitMQImplementationType); var h = new RabbitMQHealthContributor(connFactory, logrFactory.CreateLogger <RabbitMQHealthContributor>()); var status = h.Health(); Assert.Equal(HealthStatus.UP, status.Status); Assert.Contains("version", status.Details.Keys); }
public void Not_Connected_Returns_Down_Status() { _ = RabbitMQTypeLocator.IConnectionFactory; var rabbitMQImplementationType = RabbitMQTypeLocator.ConnectionFactory; var rabbitMQConfig = new RabbitMQProviderConnectorOptions(); var sInfo = new RabbitMQServiceInfo("MyId", "amqp://*****:*****@localhost:5672/si_vhost"); var logrFactory = new LoggerFactory(); var connFactory = new RabbitMQProviderConnectorFactory(sInfo, rabbitMQConfig, rabbitMQImplementationType); var h = new RabbitMQHealthContributor(connFactory, logrFactory.CreateLogger <RabbitMQHealthContributor>()); var status = h.Health(); Assert.Equal(HealthStatus.DOWN, status.Status); Assert.Equal("Failed to open RabbitMQ connection!", status.Description); }
public void Create_ReturnsRabbitMQConnection() { var config = new RabbitMQProviderConnectorOptions() { Server = "localhost", Port = 5672, Password = "******", Username = "******", VirtualHost = "vhost" }; var si = new RabbitMQServiceInfo("MyId", "amqp://*****:*****@example.com:5672/si_vhost"); var factory = new RabbitMQProviderConnectorFactory(si, config, typeof(ConnectionFactory)); var connection = factory.Create(null); Assert.NotNull(connection); }
public void Is_Connected_Returns_Up_Status() { // arrange Type rabbitMQInterfaceType = RabbitMQTypeLocator.IConnectionFactory; Type rabbitMQImplementationType = RabbitMQTypeLocator.ConnectionFactory; RabbitMQProviderConnectorOptions rabbitMQConfig = new RabbitMQProviderConnectorOptions(); var sInfo = new RabbitMQServiceInfo("MyId", "amqp://localhost:5672"); var logrFactory = new LoggerFactory(); var connFactory = new RabbitMQProviderConnectorFactory(sInfo, rabbitMQConfig, rabbitMQImplementationType); var h = new RabbitMQHealthContributor(connFactory, logrFactory.CreateLogger <RabbitMQHealthContributor>()); // act var status = h.Health(); // assert Assert.Equal(HealthStatus.UP, status.Status); }
public void UpdateConfiguration_WithNullRabbitMQServiceInfo_ReturnsInitialConfiguration() { RabbitMQProviderConfigurer configurer = new RabbitMQProviderConfigurer(); RabbitMQProviderConnectorOptions config = new RabbitMQProviderConnectorOptions() { Server = "localhost", Port = 1234, Username = "******", Password = "******", VirtualHost = "vhost" }; configurer.UpdateConfiguration(null, config); Assert.Equal("localhost", config.Server); Assert.Equal(1234, config.Port); Assert.Equal("username", config.Username); Assert.Equal("password", config.Password); Assert.Equal("vhost", config.VirtualHost); Assert.Null(config.Uri); }
public void Configure_NoServiceInfo_ReturnsProvidedConnectorOptions() { RabbitMQProviderConnectorOptions config = new RabbitMQProviderConnectorOptions() { Server = "localhost", Port = 1234, Username = "******", Password = "******", VirtualHost = "vhost" }; RabbitMQProviderConfigurer configurer = new RabbitMQProviderConfigurer(); var opts = configurer.Configure(null, config); var uri = new UriInfo(opts); Assert.False(config.SslEnabled); Assert.Equal("localhost", uri.Host); Assert.Equal(1234, uri.Port); Assert.Equal("username", uri.UserName); Assert.Equal("password", uri.Password); Assert.Equal("vhost", uri.Path); }
public void UpdateConfiguration_WithRabbitMQSSLServiceInfo_UpdatesConfigurationFromServiceInfo() { RabbitMQProviderConfigurer configurer = new RabbitMQProviderConfigurer(); RabbitMQProviderConnectorOptions config = new RabbitMQProviderConnectorOptions() { Server = "localhost", Port = 1234, Username = "******", Password = "******", VirtualHost = "vhost" }; RabbitMQServiceInfo si = new RabbitMQServiceInfo("MyId", "amqps://*****:*****@example.com:5671/si_vhost"); configurer.UpdateConfiguration(si, config); Assert.True(config.SslEnabled); Assert.Equal("example.com", config.Server); Assert.Equal(5671, config.SslPort); Assert.Equal("si_username", config.Username); Assert.Equal("si_password", config.Password); Assert.Equal("si_vhost", config.VirtualHost); }
public void ToString_ReturnsValid() { var appsettings = new Dictionary <string, string>() { ["rabbit:client:server"] = "localhost", ["rabbit:client:port"] = "1234", ["rabbit:client:password"] = "******", ["rabbit:client:username"] = "******", ["rabbit:client:virtualHost"] = "foobar", ["rabbit:client:sslEnabled"] = "true" }; ConfigurationBuilder configurationBuilder = new ConfigurationBuilder(); configurationBuilder.AddInMemoryCollection(appsettings); var config = configurationBuilder.Build(); var sconfig = new RabbitMQProviderConnectorOptions(config); string result = sconfig.ToString(); Assert.Equal("amqps://*****:*****@localhost:5671/foobar", result); }
public void Configure_SSLServiceInfoOveridesConfig_ReturnsOverriddenConnectionString() { RabbitMQProviderConnectorOptions config = new RabbitMQProviderConnectorOptions() { Server = "localhost", Port = 1234, Username = "******", Password = "******", VirtualHost = "vhost" }; RabbitMQProviderConfigurer configurer = new RabbitMQProviderConfigurer(); RabbitMQServiceInfo si = new RabbitMQServiceInfo("MyId", "amqps://*****:*****@example.com/si_vhost"); var opts = configurer.Configure(si, config); var uri = new UriInfo(opts); Assert.Equal("example.com", uri.Host); Assert.Equal("amqps", uri.Scheme); Assert.Equal("si_username", uri.UserName); Assert.Equal("si_password", uri.Password); Assert.Equal("si_vhost", uri.Path); }
/// <summary> /// Adds RabbitMQ ConnectionFactory (as IConnectionFactory and ConnectionFactory) to your Autofac Container /// </summary> /// <param name="container">Your Autofac Container Builder</param> /// <param name="config">Application configuration</param> /// <param name="serviceName">Cloud Foundry service name binding</param> /// <returns>the RegistrationBuilder for (optional) additional configuration</returns> public static IRegistrationBuilder <object, SimpleActivatorData, SingleRegistrationStyle> RegisterRabbitMQConnection(this ContainerBuilder container, IConfiguration config, string serviceName = null) { if (container == null) { throw new ArgumentNullException(nameof(container)); } if (config == null) { throw new ArgumentNullException(nameof(config)); } Type rabbitMQInterfaceType = ConnectorHelpers.FindType(rabbitMQAssemblies, rabbitMQInterfaceTypeNames); Type rabbitMQImplementationType = ConnectorHelpers.FindType(rabbitMQAssemblies, rabbitMQImplementationTypeNames); if (rabbitMQInterfaceType == null || rabbitMQImplementationType == null) { throw new ConnectorException("Unable to find ConnectionFactory, are you missing RabbitMQ assembly"); } RabbitMQServiceInfo info; if (serviceName == null) { info = config.GetSingletonServiceInfo <RabbitMQServiceInfo>(); } else { info = config.GetRequiredServiceInfo <RabbitMQServiceInfo>(serviceName); } RabbitMQProviderConnectorOptions rabbitMQConfig = new RabbitMQProviderConnectorOptions(config); RabbitMQProviderConnectorFactory factory = new RabbitMQProviderConnectorFactory(info, rabbitMQConfig, rabbitMQImplementationType); return(container.Register(c => factory.Create(null)).As(rabbitMQInterfaceType, rabbitMQImplementationType)); }