@ -94,8 +94,8 @@ public class KafkaDistributedEventBus : DistributedEventBusBase, ISingletonDepen
}
}
else if ( AnonymousHandlerFactories . ContainsKey ( eventName ) )
else if ( AnonymousHandlerFactories . ContainsKey ( eventName ) )
{
{
var jsonE lement = Json Serializer. Deserialize < JsonElemen t> ( message . Value ) ;
var e lement = Serializer . Deserialize < objec t> ( message . Value ) ;
eventData = new AnonymousEventData ( eventName , jsonE lement) ;
eventData = new AnonymousEventData ( eventName , e lement) ;
eventType = typeof ( AnonymousEventData ) ;
eventType = typeof ( AnonymousEventData ) ;
}
}
else
else
@ -127,6 +127,19 @@ public class KafkaDistributedEventBus : DistributedEventBusBase, ISingletonDepen
return new EventHandlerFactoryUnregistrar ( this , eventType , factory ) ;
return new EventHandlerFactoryUnregistrar ( this , eventType , factory ) ;
}
}
public override IDisposable Subscribe ( string eventName , IEventHandlerFactory handler )
{
GetOrCreateAnonymousHandlerFactories ( eventName ) . Locking ( factories = >
{
if ( ! handler . IsInFactories ( factories ) )
{
factories . Add ( handler ) ;
}
} ) ;
return new AnonymousEventHandlerFactoryUnregistrar ( this , eventName , handler ) ;
}
/// <inheritdoc/>
/// <inheritdoc/>
public override void Unsubscribe < TEvent > ( Func < TEvent , Task > action )
public override void Unsubscribe < TEvent > ( Func < TEvent , Task > action )
@ -175,6 +188,11 @@ public class KafkaDistributedEventBus : DistributedEventBusBase, ISingletonDepen
{
{
GetOrCreateHandlerFactories ( eventType ) . Locking ( factories = > factories . Remove ( factory ) ) ;
GetOrCreateHandlerFactories ( eventType ) . Locking ( factories = > factories . Remove ( factory ) ) ;
}
}
public override void Unsubscribe ( string eventName , IEventHandlerFactory factory )
{
GetOrCreateAnonymousHandlerFactories ( eventName ) . Locking ( factories = > factories . Remove ( factory ) ) ;
}
/// <inheritdoc/>
/// <inheritdoc/>
public override void UnsubscribeAll ( Type eventType )
public override void UnsubscribeAll ( Type eventType )
@ -318,8 +336,8 @@ public class KafkaDistributedEventBus : DistributedEventBusBase, ISingletonDepen
}
}
else if ( AnonymousHandlerFactories . ContainsKey ( incomingEvent . EventName ) )
else if ( AnonymousHandlerFactories . ContainsKey ( incomingEvent . EventName ) )
{
{
var jsonE lement = Json Serializer. Deserialize < JsonElemen t> ( incomingEvent . EventData ) ;
var e lement = Serializer . Deserialize < objec t> ( incomingEvent . EventData ) ;
eventData = new AnonymousEventData ( incomingEvent . EventName , jsonE lement) ;
eventData = new AnonymousEventData ( incomingEvent . EventName , e lement) ;
eventType = typeof ( AnonymousEventData ) ;
eventType = typeof ( AnonymousEventData ) ;
}
}
else
else
@ -410,24 +428,6 @@ public class KafkaDistributedEventBus : DistributedEventBusBase, ISingletonDepen
return EventTypes . GetOrDefault ( eventName ) ;
return EventTypes . GetOrDefault ( eventName ) ;
}
}
public override IDisposable Subscribe ( string eventName , IEventHandlerFactory handler )
{
GetOrCreateAnonymousHandlerFactories ( eventName ) . Locking ( factories = >
{
if ( ! handler . IsInFactories ( factories ) )
{
factories . Add ( handler ) ;
}
} ) ;
return new AnonymousEventHandlerFactoryUnregistrar ( this , eventName , handler ) ;
}
public override void Unsubscribe ( string eventName , IEventHandlerFactory factory )
{
GetOrCreateAnonymousHandlerFactories ( eventName ) . Locking ( factories = > factories . Remove ( factory ) ) ;
}
protected override IEnumerable < EventTypeWithEventHandlerFactories > GetAnonymousHandlerFactories ( string eventName )
protected override IEnumerable < EventTypeWithEventHandlerFactories > GetAnonymousHandlerFactories ( string eventName )
{
{
var result = new List < EventTypeWithEventHandlerFactories > ( ) ;
var result = new List < EventTypeWithEventHandlerFactories > ( ) ;