コード例 #1
0
ファイル: Program.cs プロジェクト: wardensky/wardensky-demo
        private static void consumer_Listener(IMessage message)
        {
            string taskId = string.Empty;

            try
            {
                ITextMessage msg = (ITextMessage)message;
                Dictionary <string, object> param = MqConsumer.ReadParaFromJson(msg.Text);


                if (msg.NMSType == "ModifyWirelessMode")
                {
                    string param1 = param["modeString"].ToString();
                    taskId = param["taskId"].ToString();
                    log.Info(string.Format("执行命令,参数是{0}", param1), taskId);
                    Thread.Sleep(1000 * 1);
                    WirelessModeOper.ModifyWirelessMode(param1);
                    MqAgentProducer.SendResponse(msg.NMSMessageId, true, "成功", "");
                }
            }
            catch (Exception ex)
            {
                log.Info(ex.Message);
            }
        }
コード例 #2
0
        public async Task ShouldProvideDiForLogic()
        {
            //Arrange

            var services = new ServiceCollection();

            var consumer = new MqConsumer <TestEntity, TestConsumerLogicWithDependency>("foo-queue");

            services.AddSingleton <TestConsumerLogicWithDependency.Dependency2>();
            services.AddSingleton <TestConsumerLogicWithDependency.Dependency1>();
            services
            .AddMqConsuming(consumerRegistrar => consumerRegistrar.RegisterConsumer(consumer))
            .AddMqMsgEmulator();

            var srvProvider = services.BuildServiceProvider();

            var emulator = srvProvider.GetService <IInputMessageEmulator>();

            var testEntity = new TestEntity {
                Id = Guid.NewGuid().ToString()
            };

            //Act
            var res = await emulator.Queue(testEntity, "foo-queue");

            //Assert
            Assert.True(res.Acked);
        }
コード例 #3
0
        public async Task ShouldSendFakeMessage()
        {
            //Arrange

            var services = new ServiceCollection();

            var logic    = new TestConsumerLogic();
            var consumer = new MqConsumer <TestEntity, TestConsumerLogic>("foo-queue", logic);

            services
            .AddMqConsuming(cr => cr.RegisterConsumer(consumer))
            .AddMqMsgEmulator();

            var srvProvider = services.BuildServiceProvider();

            var emulator = srvProvider.GetService <IInputMessageEmulator>();

            var testEntity = new TestEntity {
                Id = Guid.NewGuid().ToString()
            };

            //Act
            var res = await emulator.Queue(testEntity, "foo-queue");

            //Assert
            Assert.True(res.Acked);
            Assert.False(res.Rejected);
            Assert.Null(res.RejectionException);
            Assert.False(res.RequeueFlag);
            Assert.Equal(testEntity.Id, logic.LastMsgId);
        }
コード例 #4
0
        // This test is not meant to run in automation, but was only used for debugging.
        //[Fact]
        public void TestMQ()
        {
            ILogger <MqConsumer> logger = LogUtil <MqConsumer> .GetLogger();

            IOptions <RabbitMQSettings> config = Options.Create(new RabbitMQSettings());

            IMessageConsumer consumer = new MqConsumer(logger, config);

            consumer.ConsumeMessages();
            Console.WriteLine(" Press [enter] to exit.");
            Console.ReadLine();
        }
コード例 #5
0
 private HttpClient CreateTestClient(MqConsumer consumer, ITestOutputHelper output)
 {
     return(_appFactory.WithWebHostBuilder(builder =>
     {
         builder.ConfigureServices(services =>
         {
             services.AddLogging(b => b
                                 .SetMinimumLevel(LogLevel.Trace)
                                 .AddFilter(level => level >= LogLevel.Debug)
                                 .AddXUnit(output));
             services.AddMqConsuming(registrar =>
             {
                 registrar.RegisterConsumer(consumer);
             })
             .ConfigureMq(TestMqTools.ConfigureAction);
         });
     }).CreateClient());
 }
コード例 #6
0
        public async Task ShouldNotConsumeWhenNotConfigured(bool optional)
        {
            //Arrange
            using var queue = CreateTestQueue();

            var consumer = new MqConsumer <TestMqMsg, TestSimpleMqLogic>(queue.Name);

            using var client = _appFactory.WithWebHostBuilder(builder =>
            {
                builder.ConfigureServices(services =>
                {
                    services.AddLogging(b => b
                                        .SetMinimumLevel(LogLevel.Trace)
                                        .AddFilter(level => level >= LogLevel.Debug)
                                        .AddXUnit(_output));
                    services.AddMqConsuming(registrar =>
                    {
                        registrar.RegisterConsumer(consumer);
                    }, optional);
                });
            }).CreateClient();

            //Act
            await PublishMessages(queue, "foo");

            var resp = await client.GetAsync("test/single");

            var respStr = await resp.Content.ReadAsStringAsync();

            _output.WriteLine(respStr);
            resp.EnsureSuccessStatusCode();

            var testBox = JsonConvert.DeserializeObject <SingleMessageTestBox>(respStr);

            //Assert
            Assert.Null(testBox.AckMsg);
        }
コード例 #7
0
        public async Task ShouldGetNegativeResultWhenProcessingError()
        {
            //Arrange

            var services = new ServiceCollection();

            var testException = new Exception();
            var logic         = new TestConsumerLogicWithError(testException);
            var requeueFlag   = true;
            var consumer      = new MqConsumer <TestEntity, TestConsumerLogicWithError>("foo-queue", logic)
            {
                RequeueWhenError = requeueFlag
            };

            services
            .AddMqConsuming(consumerRegistrar => consumerRegistrar.RegisterConsumer(consumer))
            .AddMqMsgEmulator();

            var srvProvider = services.BuildServiceProvider();

            var emulator = srvProvider.GetService <IInputMessageEmulator>();

            var testEntity = new TestEntity {
                Id = Guid.NewGuid().ToString()
            };

            //Act
            var res = await emulator.Queue(testEntity, "foo-queue");

            //Assert
            Assert.False(res.Acked);
            Assert.True(res.Rejected);
            Assert.Equal(testException, res.RejectionException);
            Assert.Equal(requeueFlag, res.RequeueFlag);
            Assert.Equal(testEntity.Id, logic.LastMsgId);
        }
コード例 #8
0
        private static void consumer_Listener(IMessage message)
        {
            string taskId = string.Empty;

            try
            {
                ITextMessage msg = (ITextMessage)message;
                Dictionary <string, object> param = MqConsumer.ReadParaFromJson(msg.Text);
                log.Info(msg.NMSMessageId, taskId);
                if (msg.NMSType == "command2")
                {
                    string param1 = param["param2"].ToString();
                    taskId = param["taskId"].ToString();
                    log.Info("执行命令,参数是" + param1, taskId);
                    Thread.Sleep(1000 * 3);
                    log.Info("回复消息,执行成功", taskId);
                    MqAgentProducer.SendResponse(msg.NMSMessageId, true, "我已经成功执行了", "");
                }
            }
            catch (Exception ex)
            {
                log.Info(ex.Message, taskId);
            }
        }