Пример #1
0
        public async Task CanRoundtripInternalMessages_DataBusAttachment()
        {
            var message = new DataBusAttachment("bimmelim!!!");

            Console.WriteLine("Roundtripping {0}", message.GetType());

            var roundtrippedMessage = (DataBusAttachment) await Roundtrip(message);

            Assert.That(roundtrippedMessage.Id, Is.EqualTo("bimmelim!!!"));
        }
Пример #2
0
    public async Task <DataBusAttachment> CreateAttachment(Stream source, Dictionary <string, string> optionalMetadata = null)
    {
        if (source == null)
        {
            throw new ArgumentNullException(nameof(source));
        }

        var id = Guid.NewGuid().ToString();

        await _dataBusStorage.Save(id, source, optionalMetadata);

        var attachment = new DataBusAttachment(id);

        return(attachment);
    }
Пример #3
0
        public async Task Handle(EstimationReady message)
        {
            _logger.LogInformation(
                "Receiving case number {caseNumber} to notify ready estimation.",
                message.CaseNumber);

            var estimationReader = new StreamReader(await DataBusAttachment.OpenRead(message.EstimationId));

            var client        = _httpClientFactory.CreateClient("notifications");
            var contentString = System.Text.Json.JsonSerializer.Serialize(new
            {
                message.CaseNumber,
                Result     = "Success",
                Estimation = await estimationReader.ReadToEndAsync()
            });

            try
            {
                await client.PostAsync(
                    message.CallbackUri,
                    new StringContent(contentString, Encoding.UTF8, MediaTypeNames.Application.Json));

                _logger.LogInformation(
                    "Case {caseNumber} notified successfully.",
                    message.CaseNumber);

                await _bus.Send(new NotificationCompleted
                {
                    CaseNumber = message.CaseNumber
                });
            }
            catch (Exception e)
            {
                _logger.LogWarning(
                    "Case number {caseNumber} notification error. {notificationError}",
                    message.CaseNumber,
                    e.Message);

                await _bus.Send(new UnableToNotify
                {
                    CaseNumber = message.CaseNumber
                });
            }
        }
Пример #4
0
        public async Task Handle(TMessage message)
        {
            _logger.Information("Executing handlers for command {0} & {1}", message.RequestId, _consumer);

            try
            {
                foreach (var attachment in message.Attachments)
                {
                    attachment.FileStream = await DataBusAttachment.OpenRead(attachment.Id);
                }

                await _consumer.Handle(message);
            }
            catch (Exception e)
            {
                _logger.Information("Error executing handler for command {0}", e);
                throw;
            }
        }
Пример #5
0
        public async Task Handle(ImageReady message)
        {
            _logger.LogInformation(
                "New request to process image for case number {caseNumber}. ImageId: {imageId}, ImageTicket {ticket}",
                message.CaseNumber,
                message.ImageId,
                message.ImageTicket);

            var client = _httpClientFactory.CreateClient("process");

            var content = new MultipartFormDataContent
            {
                { new StringContent(message.CaseNumber.ToString("D")), "CaseNumber" },
                { new StringContent(message.ImageId.ToString("G")), "ImageId" },
                { new StringContent($"{_servicesConfiguration.Api.BaseUrl}/ExternalImageProcess/{message.CaseNumber:D}/images/{message.ImageId:G}"), "CallbackUrl" },
                { new StreamContent(await DataBusAttachment.OpenRead(message.ImageTicket)), "image" }
            };

            try
            {
                var response = await client.PostAsync(
                    new Uri($"{_servicesConfiguration.ImageProcess.BaseUrl}/ImageProcess"),
                    content);

                await ProcessResponse(message, response);
            }
            catch (Exception e)
            {
                _logger.LogWarning(
                    "Process error for image {imageId} for case number {caseNumber}. {imageProcessError}",
                    message.ImageId,
                    message.CaseNumber,
                    e.Message);

                await _bus.Send(new UnableToProcessImage
                {
                    CaseNumber = message.CaseNumber,
                    ImageId    = message.ImageId,
                    Error      = e.Message
                });
            }
        }
Пример #6
0
            public async Task Handle(string message)
            {
                using (var destination = new MemoryStream())
                {
                    var attachment = new DataBusAttachment(message);

                    using (var source = await attachment.OpenRead())
                    {
                        await source.CopyToAsync(destination);
                    }

                    _receivedTextData.Add(Encoding.UTF8.GetString(destination.ToArray()));

                    var metadata = await attachment.GetMetadata();

                    _receivedMetadata.Add(metadata);
                }

                _gotMessage.Set();
            }