Skip to content

Commit

Permalink
Merge pull request #40 from ojdev/dev
Browse files Browse the repository at this point in the history
增加Json反序列化失败时的日志
  • Loading branch information
ojdev committed Nov 8, 2019
2 parents 17c834c + bbc53c1 commit 14a7174
Show file tree
Hide file tree
Showing 9 changed files with 83 additions and 63 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,32 +5,6 @@

namespace RabbitMQ.EventBus.AspNetCore.Simple.Controllers
{
public class MessageBodyHandle00 : IEventHandler<MessageBody>, IDisposable
{
private Guid id;
private readonly ILogger<MessageBodyHandle> _logger;

public MessageBodyHandle00(ILogger<MessageBodyHandle> logger)
{
id = Guid.NewGuid();
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
}
public void Dispose()
{
Console.WriteLine("释放");
}

public Task Handle(EventHandlerArgs<MessageBody> args)
{
Console.WriteLine("==================================================");
Console.WriteLine(id + "=>" + typeof(MessageBody).Name);
Console.WriteLine(args.Event.Body);
Console.WriteLine(args.Original);
Console.WriteLine(args.Redelivered);
Console.WriteLine("==================================================");
return Task.CompletedTask;
}
}
public class MessageBodyHandle : IEventHandler<MessageBody1>, IDisposable
{
private Guid id;
Expand All @@ -46,32 +20,6 @@ public void Dispose()
Console.WriteLine("释放");
}

public Task Handle(EventHandlerArgs<MessageBody1> args)
{
Console.WriteLine("==================================================");
Console.WriteLine(id + "=>" + typeof(MessageBody1).Name);
Console.WriteLine(args.Event.Body);
Console.WriteLine(args.Original);
Console.WriteLine(args.Redelivered);
Console.WriteLine("==================================================");
return Task.CompletedTask;
}
}
public class MessageBodyHandle111 : IEventHandler<MessageBody1>, IDisposable
{
private Guid id;
private readonly ILogger<MessageBodyHandle> _logger;

public MessageBodyHandle111(ILogger<MessageBodyHandle> logger)
{
id = Guid.NewGuid();
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
}
public void Dispose()
{
Console.WriteLine("释放");
}

public Task Handle(EventHandlerArgs<MessageBody1> args)
{
Console.WriteLine("==================================================");
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
using Microsoft.Extensions.Logging;
using RabbitMQ.EventBus.AspNetCore.Events;
using System;
using System.Threading.Tasks;

namespace RabbitMQ.EventBus.AspNetCore.Simple.Controllers
{
public class MessageBodyHandle00 : IEventHandler<MessageBody>, IDisposable
{
private Guid id;
private readonly ILogger<MessageBodyHandle> _logger;

public MessageBodyHandle00(ILogger<MessageBodyHandle> logger)
{
id = Guid.NewGuid();
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
}
public void Dispose()
{
Console.WriteLine("释放");
}

public Task Handle(EventHandlerArgs<MessageBody> args)
{
Console.WriteLine("==================================================");
Console.WriteLine(id + "=>" + typeof(MessageBody).Name);
Console.WriteLine(args.Event.Body);
Console.WriteLine(args.Original);
Console.WriteLine(args.Redelivered);
Console.WriteLine("==================================================");
return Task.CompletedTask;
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
using Microsoft.Extensions.Logging;
using RabbitMQ.EventBus.AspNetCore.Events;
using System;
using System.Threading.Tasks;

namespace RabbitMQ.EventBus.AspNetCore.Simple.Controllers
{
public class MessageBodyHandle111 : IEventHandler<MessageBody1>
{
private Guid id;
private readonly ILogger<MessageBodyHandle> _logger;

public MessageBodyHandle111(ILogger<MessageBodyHandle> logger)
{
id = Guid.NewGuid();
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
}
public void Dispose()
{
Console.WriteLine("释放");
}

public Task Handle(EventHandlerArgs<MessageBody1> args)
{
Console.WriteLine("==================================================");
Console.WriteLine(id + "=>" + typeof(MessageBody1).Name);
Console.WriteLine(args.Event.Body);
Console.WriteLine(args.Original);
Console.WriteLine(args.Redelivered);
Console.WriteLine("==================================================");
return Task.CompletedTask;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public sealed class RabbitMQEventBusConnectionConfiguration
/// </summary>
public LogLevel Level { get; set; }
/// <summary>
/// 队列名前缀(默认交换机名
/// 队列名前缀(默认ClientProvidedName
/// </summary>
public QueuePrefixType Prefix { get; set; }
/// <summary>
Expand Down
8 changes: 4 additions & 4 deletions src/RabbitMQ.EventBus.AspNetCore/DefaultRabbitMQEventBus.cs
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ public void Subscribe(Type eventType, string type = ExchangeType.Topic)
{
string queue = attr.Queue ?? (_persistentConnection.Configuration.Prefix == QueuePrefixType.ExchangeName
? $"{ attr.Exchange }.{ eventType.Name }"
: $"{_persistentConnection.Configuration.ClientProvidedName}.{ eventType.Name }");//.{DateTimeOffset.Now.ToUnixTimeMilliseconds()}
: $"{_persistentConnection.Configuration.ClientProvidedName}.{ eventType.Name }");
if (!_persistentConnection.IsConnected)
{
_persistentConnection.TryConnect();
Expand All @@ -92,9 +92,8 @@ public void Subscribe(Type eventType, string type = ExchangeType.Topic)
}
catch
{

channel = _persistentConnection.ExchangeDeclare(exchange: attr.Exchange, type: type);
channel.QueueDeclare(queue: queue,//_persistentConnection.Configuration.ClientProvidedName
channel.QueueDeclare(queue: queue,
durable: true,
exclusive: false,
autoDelete: false,
Expand Down Expand Up @@ -152,6 +151,7 @@ private async Task ProcessEvent(string body, Type eventType, BasicDeliverEventAr
foreach (Type eventHandleType in typeof(IEventHandler<>).GetMakeGenericType(eventType))
{
object eventHandler = scope.ServiceProvider.GetRequiredService(eventHandleType);
object logger = scope.ServiceProvider.GetRequiredService(typeof(ILogger<>).MakeGenericType(eventType));
if (eventHandler == null)
{
throw new InvalidOperationException(eventHandleType.Name);
Expand All @@ -160,7 +160,7 @@ private async Task ProcessEvent(string body, Type eventType, BasicDeliverEventAr
await (Task)concreteType.GetMethod(nameof(IEventHandler<IEvent>.Handle)).Invoke(
eventHandler,
new object[] {
Activator.CreateInstance(typeof(EventHandlerArgs<>).MakeGenericType(eventType), new object[] { body, args.Redelivered, args.Exchange, args.RoutingKey })
Activator.CreateInstance(typeof(EventHandlerArgs<>).MakeGenericType(eventType), new object[] { body, args.Redelivered, args.Exchange, args.RoutingKey, logger })
});
}
}
Expand Down
10 changes: 7 additions & 3 deletions src/RabbitMQ.EventBus.AspNetCore/Events/EventHandlerArgs.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using Microsoft.Extensions.Logging;
using System;
using System.ComponentModel;
using System.Text.Json;

Expand All @@ -9,6 +10,7 @@ namespace RabbitMQ.EventBus.AspNetCore.Events
/// </summary>
public class EventHandlerArgs<TEvent>
{
private readonly ILogger<TEvent> _logger;
/// <summary>
/// 原始消息
/// </summary>
Expand All @@ -32,12 +34,14 @@ public class EventHandlerArgs<TEvent>
/// <param name="redelivered"></param>
/// <param name="exchange"></param>
/// <param name="routingKey"></param>
public EventHandlerArgs(string original, bool redelivered, string exchange, string routingKey)
/// <param name="logger"></param>
public EventHandlerArgs(string original, bool redelivered, string exchange, string routingKey, ILogger<TEvent> logger = null)
{
Original = original;
Redelivered = redelivered;
Exchange = exchange;
RoutingKey = routingKey;
_logger = logger;
}
private TEvent _event;
/// <summary>
Expand All @@ -51,7 +55,6 @@ public TEvent Event
{
try
{

_event = JsonSerializer.Deserialize<TEvent>(Original);
}
catch
Expand All @@ -62,6 +65,7 @@ public TEvent Event
}
catch (Exception ex)
{
_logger.LogError(new EventId(ex.HResult), ex, $"content {Original} deserialize type {typeof(TEvent).Name} error {ex.Message}");
throw ex;
}
}
Expand Down
3 changes: 2 additions & 1 deletion src/RabbitMQ.EventBus.AspNetCore/Events/IEventHandler.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Threading.Tasks;
using System;
using System.Threading.Tasks;

namespace RabbitMQ.EventBus.AspNetCore.Events
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,6 @@ public static void RabbitMQEventBusAutoSubscribe(this IApplicationBuilder app)
var handlesAny = typeof(IEventHandler<>).GetMakeGenericType(mType);
if (handlesAny.Any())
{

logger.LogInformation($"{mType.Name}\t=>\t{string.Join("", handlesAny)}");
eventBus.Subscribe(mType);
}
Expand Down
2 changes: 1 addition & 1 deletion src/RabbitMQ.EventBus.AspNetCore/Modules/EventBusArgs.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public class EventBusArgs
/// <param name="clientProvidedName">客户端</param>
/// <param name="message">消息</param>
/// <param name="success">结果</param>
public EventBusArgs(string endPoint, string exchange, string queue, string routingKey, string exchangeType, string clientProvidedName, string message,bool success)
public EventBusArgs(string endPoint, string exchange, string queue, string routingKey, string exchangeType, string clientProvidedName, string message, bool success)
{
Endpoint = endPoint;
Exchange = exchange;
Expand Down

0 comments on commit 14a7174

Please sign in to comment.