コード例 #1
0
        public void Create_Default(string name, Data d)
        {
            var test = new MessageContextData <Data>(name, d);

            Assert.Equal(name, test.Name);
            Assert.Equal(d, test.Default);
        }
コード例 #2
0
ファイル: TapetiConsumer.cs プロジェクト: MvRens/Tapeti
        private async Task <ConsumeResult> DispatchMessage(object message, MessageContextData messageContextData)
        {
            var returnResult     = ConsumeResult.Success;
            var messageType      = message.GetType();
            var validMessageType = false;

            foreach (var binding in bindings.Where(binding => binding.Accept(messageType)))
            {
                var consumeResult = await InvokeUsingBinding(message, messageContextData, binding);

                validMessageType = true;

                if (consumeResult != ConsumeResult.Success)
                {
                    returnResult = consumeResult;
                }
            }

            if (!validMessageType)
            {
                throw new ArgumentException($"No binding found for message type: {message.GetType().FullName}");
            }

            return(returnResult);
        }
コード例 #3
0
ファイル: TapetiConsumer.cs プロジェクト: MvRens/Tapeti
        private async Task <ConsumeResult> InvokeUsingBinding(object message, MessageContextData messageContextData, IBinding binding)
        {
            using (var context = new MessageContext
            {
                Config = config,
                Queue = queueName,
                Exchange = messageContextData.Exchange,
                RoutingKey = messageContextData.RoutingKey,
                Message = message,
                Properties = messageContextData.Properties,
                Binding = binding
            })
            {
                try
                {
                    await MiddlewareHelper.GoAsync(config.Middleware.Message,
                                                   async (handler, next) => await handler.Handle(context, next),
                                                   async() => { await binding.Invoke(context); });

                    await binding.Cleanup(context, ConsumeResult.Success);

                    return(ConsumeResult.Success);
                }
                catch (Exception invokeException)
                {
                    var exceptionContext = new ExceptionStrategyContext(context, invokeException);
                    HandleException(exceptionContext);

                    await binding.Cleanup(context, exceptionContext.ConsumeResult);

                    return(exceptionContext.ConsumeResult);
                }
            }
        }
コード例 #4
0
 public void Create_Null_Name_Fails()
 {
     Assert.Throws<ArgumentNullException>(
     delegate
     {
         var test = new MessageContextData<Data>(null, null);
         Assert.Null(test);
     });
 }
コード例 #5
0
 public void Create_Null_Name_Fails()
 {
     Assert.Throws <ArgumentNullException>(
         delegate
     {
         var test = new MessageContextData <Data>(null, null);
         Assert.Null(test);
     });
 }
コード例 #6
0
 public void Send_Message_And_Data(string value)
 {
     using (var test = CreateQueue())
     {
         var data = new FakeAMessageData();
         IMessageContextData <string> header = new MessageContextData <string>(value, string.Empty);
         data.SetHeader(header, value);
         test.Send((message, notification) => Console.WriteLine("hello"), data);
     }
 }
コード例 #7
0
 public void Send_Message_And_Data(string value)
 {
     using (var test = CreateQueue())
     {
         var data = new FakeAMessageData();
         IMessageContextData <string> header = new MessageContextData <string>(value, string.Empty);
         data.SetHeader(header, value);
         test.Send(new FakeMessage(), data);
     }
 }
コード例 #8
0
 public void Send_Message_And_Data(string value)
 {
     using (var test = CreateQueue())
     {
         var data = new FakeAMessageData();
         IMessageContextData <string> header = new MessageContextData <string>(value, string.Empty);
         data.SetHeader(header, value);
         var response = test.CreateResponse(Substitute.For <IMessageId>(),
                                            TimeSpan.FromHours(1));
         test.Send(new FakeMessage(), response, data);
     }
 }
コード例 #9
0
 public void Create_Default(string name, Data d)
 {
     var test = new MessageContextData<Data>(name, d);
     Assert.Equal(name, test.Name);
     Assert.Equal(d, test.Default);
 }
コード例 #10
0
 public void Create_Null_Data_Ok(string name)
 {
     var test = new MessageContextData<Data>(name, null);
     Assert.NotNull(test);
 }
コード例 #11
0
 public void Send_Message_And_Data(string value)
 {
     using (var test = CreateQueue())
     {
         var data = new FakeAMessageData();
         IMessageContextData<string> header = new MessageContextData<string>(value, string.Empty);
         data.SetHeader(header, value);
         test.Send((message, notification) => Console.WriteLine("hello"), data);
     }
 }
コード例 #12
0
        public void Create_Null_Data_Ok(string name)
        {
            var test = new MessageContextData <Data>(name, null);

            Assert.NotNull(test);
        }
コード例 #13
0
 public void Send_Message_And_Data(string value)
 {
     using (var test = CreateQueue())
     {
         var data = new FakeAMessageData();
         IMessageContextData<string> header = new MessageContextData<string>(value, string.Empty);
         data.SetHeader(header, value);
         var response = test.CreateResponse(Substitute.For<IMessageId>(),
             TimeSpan.FromHours(1));
         test.Send(new FakeMessage(), response, data);
     }
 }
コード例 #14
0
 public void Send_Message_And_Data(string value)
 {
     using (var test = CreateQueue())
     {
         var data = new FakeAMessageData();
         IMessageContextData<string> header = new MessageContextData<string>(value, string.Empty);
         data.SetHeader(header, value);
         test.Send(new FakeMessage(), data);
     }
 }