public async Task SimpleMessageListener() { var queues = new List <IQueue>() { QueueBuilder.Durable("testQueue").Build(), QueueBuilder.Durable("secondQueue").Build() }; var provider = await Config.CreateAndStartServices(null, queues, typeof(SimpleMessageListenerTestBean)); var context = provider.GetService <IApplicationContext>(); var factory = context.GetService <IRabbitListenerContainerFactory>() as RabbitListenerContainerTestFactory; Assert.Single(factory.GetListenerContainers()); var container = factory.GetListenerContainers()[0] as MessageListenerTestContainer; var endpoint = container.Endpoint; Assert.IsType <MethodRabbitListenerEndpoint>(endpoint); var methodEndpoint = endpoint as MethodRabbitListenerEndpoint; Assert.NotNull(methodEndpoint.Instance); Assert.NotNull(methodEndpoint.Method); var listenerContainer = new DirectMessageListenerContainer(context); methodEndpoint.SetupListenerContainer(listenerContainer); Assert.NotNull(listenerContainer.MessageListener); Assert.True(container.IsStarted); provider.Dispose(); Assert.True(container.IsStopped); }
public async Task MixedQueuesAndQueueNamesTestBeanTest() { var queue1 = QueueBuilder.Durable("metaTestQueue").Build(); queue1.ServiceName = "queue1"; var queue2 = QueueBuilder.Durable("metaTestQueue2").Build(); var queues = new List <IQueue>() { queue1, queue2 }; var provider = await Config.CreateAndStartServices(null, queues, typeof(MixedQueuesAndQueueNamesTestBean)); var context = provider.GetService <IApplicationContext>(); var factory = context.GetService <IRabbitListenerContainerFactory>() as RabbitListenerContainerTestFactory; Assert.Single(factory.GetListenerContainers()); var container = factory.GetListenerContainers()[0] as MessageListenerTestContainer; var endpoint = container.Endpoint as AbstractRabbitListenerEndpoint; Assert.NotNull(endpoint); Assert.Equal(2, endpoint.QueueNames.Count); Assert.Contains("metaTestQueue", endpoint.QueueNames); Assert.Contains("metaTestQueue2", endpoint.QueueNames); }
public async Task InvalidValueInAnnotationTestBeanTest() { var queue1 = QueueBuilder.Durable("metaTestQueue").Build(); queue1.ServiceName = "queue1"; var queue2 = QueueBuilder.Durable("metaTestQueue2").Build(); queue2.ServiceName = "queue2"; var queues = new List <IQueue>() { queue1, queue2 }; var excep = await Assert.ThrowsAsync <ExpressionException>(() => Config.CreateAndStartServices(null, queues, typeof(InvalidValueInAnnotationTestBean))); }
public static async Task <ServiceProvider> CreateAndStartServices() { var mockConnectionFactory = new Mock <IConnectionFactory>(); var mockConnection = new Mock <IConnection>(); var mockChannel = new Mock <R.IModel>(); mockConnectionFactory.Setup(f => f.CreateConnection()).Returns(mockConnection.Object); mockConnection.Setup(c => c.CreateChannel(It.IsAny <bool>())).Returns(mockChannel.Object); mockChannel.Setup((c) => c.CreateBasicProperties()).Returns(new MockRabbitBasicProperties()); mockConnection.Setup((c) => c.IsOpen).Returns(true); mockChannel.Setup((c) => c.IsOpen).Returns(true); var queueName = new AtomicReference <string>(); mockChannel.Setup(c => c.QueueDeclarePassive(It.IsAny <string>())).Returns(() => new R.QueueDeclareOk(queueName.Value, 0, 0)) .Callback <string>((name) => queueName.Value = name); var services = new ServiceCollection(); var config = new ConfigurationBuilder().Build(); services.AddSingleton <IConfiguration>(config); services.AddRabbitHostingServices(); services.AddRabbitMessageHandlerMethodFactory(); services.AddRabbitListenerAttributeProcessor(); services.AddRabbitDefaultMessageConverter(); services.AddRabbitListenerEndpointRegistry(); services.AddRabbitListenerEndpointRegistrar(); services.AddSingleton <IConnectionFactory>(mockConnectionFactory.Object); services.AddRabbitListenerContainerFactory <TestDirectRabbitListenerContainerFactory>("rabbitListenerContainerFactory"); services.AddRabbitAdmin(); var myQueue = QueueBuilder.Durable("myQueue").Build(); var anotherQueue = QueueBuilder.Durable("anotherQueue").Build(); var class1 = QueueBuilder.Durable("class1").Build(); var class2 = QueueBuilder.Durable("class2").Build(); services.AddRabbitQueues(myQueue, anotherQueue, class1, class2); services.AddSingleton <RabbitListenersBean>(); services.AddSingleton <ClassLevelListenersBean>(); services.AddRabbitListeners(config, typeof(RabbitListenersBean), typeof(ClassLevelListenersBean)); var container = services.BuildServiceProvider(); await container.GetRequiredService <IHostedService>().StartAsync(default);
public async Task SimpleMessageListenerWithMixedAnnotations() { var configBuilder = new ConfigurationBuilder(); configBuilder.AddInMemoryCollection(new Dictionary <string, string>() { { "rabbit:myQueue", "secondQueue" } }); var config = configBuilder.Build(); var queues = new List <IQueue>() { QueueBuilder.Durable("testQueue").Build(), QueueBuilder.Durable("secondQueue").Build() }; var provider = await Config.CreateAndStartServices(config, queues, typeof(SimpleMessageListenerWithMixedAnnotationsTestBean)); var context = provider.GetService <IApplicationContext>(); var factory = context.GetService <IRabbitListenerContainerFactory>() as RabbitListenerContainerTestFactory; Assert.Single(factory.GetListenerContainers()); var container = factory.GetListenerContainers()[0]; var endpoint = container.Endpoint; Assert.IsType <MethodRabbitListenerEndpoint>(endpoint); var methodEndpoint = endpoint as MethodRabbitListenerEndpoint; Assert.NotNull(methodEndpoint.Instance); Assert.NotNull(methodEndpoint.Method); Assert.Equal(2, methodEndpoint.QueueNames.Count); Assert.Contains("testQueue", methodEndpoint.QueueNames); Assert.Contains("secondQueue", methodEndpoint.QueueNames); var listenerContainer = new DirectMessageListenerContainer(context); methodEndpoint.SetupListenerContainer(listenerContainer); Assert.NotNull(listenerContainer.MessageListener); Assert.True(container.IsStarted); provider.Dispose(); Assert.True(container.IsStopped); }
public async Task PropertyPlaceholderResolvingToQueueTestBeanTest() { var configBuilder = new ConfigurationBuilder(); configBuilder.AddInMemoryCollection(new Dictionary <string, string>() { { "rabbit:myQueue", "#{@queue1}" } }); var config = configBuilder.Build(); var queue1 = QueueBuilder.Durable("metaTestQueue").Build(); queue1.ServiceName = "queue1"; var queue2 = QueueBuilder.Durable("metaTestQueue2").Build(); queue2.ServiceName = "queue2"; var queues = new List <IQueue>() { queue1, queue2 }; var provider = await Config.CreateAndStartServices(config, queues, typeof(PropertyPlaceholderResolvingToQueueTestBean)); var context = provider.GetService <IApplicationContext>(); var factory = context.GetService <IRabbitListenerContainerFactory>() as RabbitListenerContainerTestFactory; Assert.Single(factory.GetListenerContainers()); var container = factory.GetListenerContainers()[0] as MessageListenerTestContainer; var endpoint = container.Endpoint as AbstractRabbitListenerEndpoint; Assert.NotNull(endpoint); Assert.Equal(2, endpoint.QueueNames.Count); Assert.Contains("metaTestQueue", endpoint.QueueNames); Assert.Contains("metaTestQueue2", endpoint.QueueNames); }