示例#1
0
        public void GetRoutingKey_SingleKeyMemberMessage_PropertyValueIsReturned()
        {
            var message = new RoutingKeyMessage
            {
                Id    = Guid.NewGuid(),
                One   = "1",
                Two   = "2",
                Three = "3"
            };

            var key = RabbitRoutingKeyHelper.GetRoutingKey(message);

            key.Should().Be("1");
        }
示例#2
0
        public void GetRoutingKey_MultipleKeyAttributesWithSameKey_ExceptionIsThrown()
        {
            var message = new MultipleRoutingKeyAttributesMessage
            {
                Id    = Guid.NewGuid(),
                One   = "1",
                Two   = "2",
                Three = "3"
            };

            Action act = () => RabbitRoutingKeyHelper.GetRoutingKey(message);

            act.Should().Throw <InvalidOperationException>();
        }
示例#3
0
        public void GetRoutingKey_NoKeyAttribute_NullIsReturned()
        {
            var message = new NoRoutingKeyMessage
            {
                Id    = Guid.NewGuid(),
                One   = "1",
                Two   = "2",
                Three = "3"
            };

            var key = RabbitRoutingKeyHelper.GetRoutingKey(message);

            key.Should().BeNull();
        }
        /// <inheritdoc cref="IProducerBehavior.HandleAsync" />
        public async Task HandleAsync(ProducerPipelineContext context, ProducerBehaviorHandler next)
        {
            Check.NotNull(context, nameof(context));
            Check.NotNull(next, nameof(next));

            if (context.Envelope.Message != null)
            {
                var key = RabbitRoutingKeyHelper.GetRoutingKey(context.Envelope.Message);

                if (key != null)
                {
                    context.Envelope.Headers.AddOrReplace(RabbitMessageHeaders.RoutingKey, key);
                }
            }

            await next(context).ConfigureAwait(false);
        }