Exemplo n.º 1
0
    public static (Activity?act, ProducedMessage msgs) Start(
        ProducedMessage message,
        IEnumerable <KeyValuePair <string, object?> >?tags
        )
    {
        var activity = GetActivity(tags);

        var meta      = GetMeta(message.Metadata);
        var messageId = message.MessageId.ToString();

        activity?
        .SetTag(TelemetryTags.Message.Type, message.MessageType)
        .SetTag(TelemetryTags.Message.Id, messageId)
        .SetTag(TelemetryTags.Messaging.MessageId, messageId)
        .CopyParentTag(TelemetryTags.Messaging.ConversationId)
        .SetOrCopyParentTag(
            TelemetryTags.Messaging.CausationId,
            meta.GetCausationId(),
            TelemetryTags.Message.Id
            )
        .SetOrCopyParentTag(TelemetryTags.Messaging.CorrelationId, meta.GetCorrelationId())
        .Start();

        meta.AddActivityTags(activity);

        return(activity, message with {
            Metadata = meta
        });
Exemplo n.º 2
0
        /// <inheritdoc />
        public ProducedMessage OnProduce(ProducedMessage message)
        {
            var properties = message.Properties;
            var body       = message.Body;

            using var output = new MemoryStream();
            using (var compressingStream = new GZipStream(output, CompressionMode.Compress))
                compressingStream.Write(body, 0, body.Length);
            return(new ProducedMessage(properties, output.ToArray()));
        }
Exemplo n.º 3
0
        public void ShouldEncryptAndDecrypt()
        {
            var interceptor     = new TripleDESInterceptor(Convert.FromBase64String("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), Convert.FromBase64String("aaaaaaaaaaa="));
            var body            = Encoding.UTF8.GetBytes("haha");
            var outgoingMessage = new ProducedMessage(new MessageProperties(), body);
            var message         = interceptor.OnProduce(outgoingMessage);
            var incomingMessage = new ConsumedMessage(null, message.Properties, message.Body);

            Assert.Equal(body, interceptor.OnConsume(incomingMessage).Body);
        }
Exemplo n.º 4
0
        public void ShouldCompressAndDecompress()
        {
            var interceptor     = new GZipInterceptor();
            var body            = Encoding.UTF8.GetBytes("haha");
            var outgoingMessage = new ProducedMessage(new MessageProperties(), body);
            var message         = interceptor.OnProduce(outgoingMessage);
            var incomingMessage = new ConsumedMessage(null, message.Properties, message.Body);

            Assert.Equal(body, interceptor.OnConsume(incomingMessage).Body);
        }
Exemplo n.º 5
0
        /// <inheritdoc />
        public ProducedMessage OnProduce(ProducedMessage message)
        {
            var properties = message.Properties;
            var body       = message.Body;

            using var tripleDes          = TripleDES.Create();
            using var tripleDesEncryptor = tripleDes.CreateEncryptor(key, iv);
            var encryptedBody = tripleDesEncryptor.TransformFinalBlock(body, 0, body.Length);

            return(new ProducedMessage(properties, encryptedBody));
        }
Exemplo n.º 6
0
        public void ShouldCallAddedInterceptorsOnProduce()
        {
            var sourceMessage = new ProducedMessage(new MessageProperties(), new byte[0]);
            var firstMessage  = new ProducedMessage(new MessageProperties(), new byte[0]);
            var secondMessage = new ProducedMessage(new MessageProperties(), new byte[0]);

            var first  = Substitute.For <IProduceConsumeInterceptor>();
            var second = Substitute.For <IProduceConsumeInterceptor>();

            first.OnProduce(sourceMessage).Returns(firstMessage);
            second.OnProduce(firstMessage).Returns(secondMessage);

            var compositeInterceptor = new CompositeInterceptor();

            compositeInterceptor.Add(first);
            compositeInterceptor.Add(second);
            Assert.Equal(secondMessage, compositeInterceptor.OnProduce(sourceMessage));
        }
Exemplo n.º 7
0
 /// <inheritdoc />
 public ProducedMessage OnProduce(ProducedMessage message) => message;
Exemplo n.º 8
0
 /// <inheritdoc />
 public ProducedMessage OnProduce(ProducedMessage message)
 {
     return(interceptors.AsEnumerable()
            .Aggregate(message, (x, y) => y.OnProduce(x)));
 }