예제 #1
0
파일: TestBroker.cs 프로젝트: Zapote/EzBus
        public Task Send(string destination, BasicMessage basicMessage)
        {
            var consumers = serviceProvider.GetServices <IConsumer>();

            basicMessage.AddHeader(MessageHeaders.Destination, destination);

            foreach (var consumer in consumers)
            {
                ((TestConsumer)consumer).Invoke(basicMessage);
            }

            return(Task.CompletedTask);
        }
예제 #2
0
파일: Consumer.cs 프로젝트: Zapote/EzBus
        private void OnReceivedMessage(object sender, BasicDeliverEventArgs args)
        {
            var body    = args.Body.ToArray();
            var message = new BasicMessage(new MemoryStream(body));

            foreach (var header in args.BasicProperties.Headers)
            {
                var value = Encoding.UTF8.GetString((byte[])header.Value);
                message.AddHeader(header.Key, value);
            }

            onMessage(message).GetAwaiter().GetResult();

            channel.BasicAck(args.DeliveryTag, false);
        }
예제 #3
0
        public async Task OnError(Exception ex)
        {
            if (bm == null)
            {
                throw new Exception("Message is null!", ex);
            }
            bm.BodyStream.Position = 0;

            var level = 0;

            while (ex != null)
            {
                var headerName = $"EzBus.ErrorMessage L{level}";
                var value      = $"{DateTime.UtcNow}: {ex.Message}";
                bm.AddHeader(headerName, value);
                ex = ex.InnerException;
                level++;
            }

            await broker.Send(addressConfig.ErrorAddress, bm);
        }