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); } }
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); }
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); }
// 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(); }
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()); }
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); }
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); }
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); } }