Ejemplo n.º 1
0
 protected virtual IEnumerable<dynamic> GetHandlersForEvent(IPublishableEvent eventMessage)
 {
     var type = eventMessage.Payload.GetType();
     var handlerType = typeof (IEventHandler<>).MakeGenericType(type);
     var handlers = _container.ResolveAll(handlerType);
     return handlers.Cast<dynamic>();
 }
Ejemplo n.º 2
0
 public void Publish(IPublishableEvent eventMessage)
 {
     foreach (var bus in _wrappedBuses)
     {
         bus.Publish(eventMessage);
     }
 }
Ejemplo n.º 3
0
 public void Publish(IPublishableEvent eventMessage)
 {
     foreach (var bus in _wrappedBuses)
     {
         bus.Publish(eventMessage);
     }
 }
Ejemplo n.º 4
0
        private static IMessage CreateEventMessage(IPublishableEvent evnt)
        {
            Type factoryType = typeof(EventMessageFactory <>).MakeGenericType(evnt.Payload.GetType());
            var  factory     = (IEventMessageFactory)Activator.CreateInstance(factoryType);

            return(factory.CreateEventMessage(evnt));
        }
Ejemplo n.º 5
0
        protected virtual IEnumerable <dynamic> GetHandlersForEvent(IPublishableEvent eventMessage)
        {
            var type        = eventMessage.Payload.GetType();
            var handlerType = typeof(IEventHandler <>).MakeGenericType(type);
            var handlers    = _container.ResolveAll(handlerType);

            return(handlers.Cast <dynamic>());
        }
Ejemplo n.º 6
0
        /// <inheritdoc />
        public Task PublishAsync(IPublishableEvent @event)
        {
            var eventBody = JsonConvert.SerializeObject(@event, Formatting.Indented);

            Console.WriteLine($"POST {@event.Metadata.EntityName}/{@event.Metadata.EventName}/{@event.Metadata.MajorVersion}/{@event.Metadata.MinorVersion}");
            Console.WriteLine(eventBody);
            return(Task.CompletedTask);
        }
Ejemplo n.º 7
0
        private static void TransactionallyPublishToHandlers(IPublishableEvent eventMessage, Type eventMessageType, IEnumerable <Action <PublishedEvent> > handlers)
        {
            Contract.Requires <ArgumentNullException>(handlers != null);

            using (var transaction = new TransactionScope())
            {
                PublishToHandlers(eventMessage, eventMessageType, handlers);
                transaction.Complete();
            }
        }
Ejemplo n.º 8
0
        public void Registering_handler_via_generic_overload_should_also_add_the_handler()
        {
            var aDomainEventHandler = MockRepository.GenerateMock <IEventHandler <ADomainEvent> >();
            var bus = new InProcessEventBus();

            bus.RegisterHandler(aDomainEventHandler);

            var events = new IPublishableEvent[]
            {
                CreateAEvent(), CreateADomainEvent(), CreateADomainEvent(), CreateAEvent(), CreateADomainEvent(), CreateAEvent(),
                CreateAEvent(), CreateADomainEvent(), CreateADomainEvent(), CreateAEvent(), CreateADomainEvent(), CreateAEvent()
            };

            bus.Publish(events);

            aDomainEventHandler.AssertWasCalled(h => h.Handle(null), options => options.IgnoreArguments().Repeat.Times(6));
        }
Ejemplo n.º 9
0
        public void When_multiple_messages_are_published_and_a_specific_handler_is_register_oply_the_matching_events_should_be_received_at_the_handler()
        {
            var aDomainEventHandler = MockRepository.GenerateMock <IEventHandler <ADomainEvent> >();
            var bus = new InProcessEventBus();

            bus.RegisterHandler(aDomainEventHandler);

            var events = new IPublishableEvent[]
            {
                CreateAEvent(), CreateADomainEvent(), CreateADomainEvent(), CreateAEvent(), CreateADomainEvent(), CreateAEvent(),
                CreateAEvent(), CreateADomainEvent(), CreateADomainEvent(), CreateAEvent(), CreateADomainEvent(), CreateAEvent()
            };

            bus.Publish(events);

            aDomainEventHandler.AssertWasCalled(h => h.Handle(null), options => options.IgnoreArguments().Repeat.Times(6));
        }
Ejemplo n.º 10
0
        public void Registering_handler_via_generic_overload_should_also_add_the_handler()
        {
            var aDomainEventHandler = MockRepository.GenerateMock<IEventHandler<ADomainEvent>>();
            var bus = new InProcessEventBus();

            bus.RegisterHandler(aDomainEventHandler);

            var events = new IPublishableEvent[]
                             {
                                 CreateAEvent(), CreateADomainEvent(), CreateADomainEvent(), CreateAEvent(), CreateADomainEvent(), CreateAEvent(),
                                 CreateAEvent(), CreateADomainEvent(), CreateADomainEvent(), CreateAEvent(), CreateADomainEvent(), CreateAEvent()
                             };

            bus.Publish(events);

            aDomainEventHandler.AssertWasCalled(h => h.Handle(null), options => options.IgnoreArguments().Repeat.Times(6));
        }
Ejemplo n.º 11
0
        private static void PublishToHandlers(IPublishableEvent eventMessage, Type eventMessageType, IEnumerable <Action <PublishedEvent> > handlers)
        {
            Contract.Requires <ArgumentNullException>(handlers != null);

            Log.DebugFormat("Found {0} handlers for event {1}.", handlers.Count(), eventMessageType.FullName);

            var publishedEventClosedType = typeof(PublishedEvent <>).MakeGenericType(eventMessage.Payload.GetType());
            var publishedEvent           = (PublishedEvent)Activator.CreateInstance(publishedEventClosedType, eventMessage);

            foreach (var handler in handlers)
            {
                Log.DebugFormat("Calling handler {0} for event {1}.", handler.GetType().FullName,
                                eventMessageType.FullName);

                handler(publishedEvent);

                Log.DebugFormat("Call finished.");
            }
        }
Ejemplo n.º 12
0
        public void Publish(IPublishableEvent eventMessage)
        {
            var eventMessageType = eventMessage.GetType();

            Log.InfoFormat("Started publishing event {0}.", eventMessageType.FullName);

            var handlers = GetHandlersForEvent(eventMessage).ToList();

            var publishedEventClosedType = typeof(PublishedEvent <>).MakeGenericType(eventMessage.Payload.GetType());
            var publishedEvent           = (PublishedEvent)Activator.CreateInstance(publishedEventClosedType, eventMessage);

            if (handlers.Count() == 0)
            {
                Log.WarnFormat("Did not found any handlers for event {0}.", eventMessageType.FullName);
            }
            else
            {
                PublishToHandlers(publishedEvent, eventMessageType, handlers);
            }
        }
Ejemplo n.º 13
0
        public void Publish(IPublishableEvent eventMessage)
        {
            var eventMessageType = eventMessage.GetType();

            Log.InfoFormat("Started publishing event {0}.", eventMessageType.FullName);

            var handlers = GetHandlersForEvent(eventMessage).ToList();

            var publishedEventClosedType = typeof(PublishedEvent<>).MakeGenericType(eventMessage.Payload.GetType());
            var publishedEvent = (PublishedEvent)Activator.CreateInstance(publishedEventClosedType, eventMessage);

            if (handlers.Count() == 0)
            {
                Log.WarnFormat("Did not found any handlers for event {0}.", eventMessageType.FullName);
            }
            else
            {
                PublishToHandlers(publishedEvent, eventMessageType, handlers);
            }
        }
Ejemplo n.º 14
0
        public IResult ThrowEvent(IPublishableEvent publishableEvent, string topic = "/", Action <IMessagePublishedEventArgs> MessagePublished = null, byte qosLevel = 2, bool retain = false)
        {
            if (messageClient == null || !messageClient.IsConnected)
            {
                return(new Result(false, new Message(MessageType.Warning, "MessageClient is not initialized or not connected")));
            }

            if (publishableEvent == null)
            {
                return(new Result(new ArgumentNullException("publishableEvent")));
            }

            if (eventDelegates.TryGetValue(publishableEvent.Name, out EventDelegate eventDelegate))
            {
                eventDelegate.Invoke(this, publishableEvent);
            }

            string message = JsonConvert.SerializeObject(publishableEvent, Formatting.Indented);

            return(messageClient.Publish(topic, message, MessagePublished, qosLevel, retain));
        }
Ejemplo n.º 15
0
        protected IEnumerable <Action <PublishedEvent> > GetHandlersForEvent(IPublishableEvent eventMessage)
        {
            if (eventMessage == null)
            {
                return(null);
            }

            var dataType = eventMessage.Payload.GetType();
            var result   = new List <Action <PublishedEvent> >();

            foreach (var key in _handlerRegister.Keys)
            {
                if (key.IsAssignableFrom(dataType))
                {
                    var handlers = _handlerRegister[key];
                    result.AddRange(handlers);
                }
            }

            return(result);
        }
Ejemplo n.º 16
0
        public void Publish(IPublishableEvent eventMessage)
        {
            var eventMessageType = eventMessage.GetType();

            Log.InfoFormat("Started publishing event {0}.", eventMessageType.FullName);

            IEnumerable <Action <PublishedEvent> > handlers = GetHandlersForEvent(eventMessage);

            if (handlers.Count() == 0)
            {
                Log.WarnFormat("Did not found any handlers for event {0}.", eventMessageType.FullName);
            }
            else
            {
                if (_useTransactionScope)
                {
                    TransactionallyPublishToHandlers(eventMessage, eventMessageType, handlers);
                }
                else
                {
                    PublishToHandlers(eventMessage, eventMessageType, handlers);
                }
            }
        }
Ejemplo n.º 17
0
 public SourcedEventProcessingElement(int sequenceNumber, IPublishableEvent @event)
 {
     SequenceNumber = sequenceNumber;
     _event         = @event;
 }
Ejemplo n.º 18
0
 public SourcedEventProcessingElement(IPublishableEvent evnt)
 {
     _event = evnt;
 }
Ejemplo n.º 19
0
 public IResult ThrowEvent(IPublishableEvent publishableEvent, string topic, Action <IMessagePublishedEventArgs> MessagePublished, byte qosLevel, bool retain)
 {
     return(submodelServiceProvider.ThrowEvent(publishableEvent, topic, MessagePublished, qosLevel, retain));
 }
 public SourcedEventProcessingElement(IPublishableEvent evnt)
 {
     _event = evnt;
 }
 public SourcedEventProcessingElement(int sequenceNumber, IPublishableEvent @event)
 {
     SequenceNumber = sequenceNumber;
     _event = @event;
 }
Ejemplo n.º 22
0
 public void Publish(IPublishableEvent eventMessage)
 {
     Bus.Publish(eventMessage);
 }
Ejemplo n.º 23
0
 public void Publish(IPublishableEvent eventMessage)
 {
     _recording.Add(eventMessage);
     _realBus.Publish(eventMessage);
 }
Ejemplo n.º 24
0
 public void Publish(IPublishableEvent eventMessage)
 {
     _recording.Add(eventMessage);
     _realBus.Publish(eventMessage);
 }
 public IResult ThrowEvent(IPublishableEvent publishableEvent, string topic, Action <IMessagePublishedEventArgs> MessagePublished, byte qosLevel)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 26
0
 public void Publish(IPublishableEvent eventMessage)
 {
 }
Ejemplo n.º 27
0
 public void Publish(IPublishableEvent eventMessage)
 {
     Bus.Publish(eventMessage);
 }
Ejemplo n.º 28
0
 public void Publish(IPublishableEvent eventMessage)
 {
     EventDispatcher.Dispatch(eventMessage);
 }
Ejemplo n.º 29
0
 public void Publish(IPublishableEvent eventMessage)
 {
     Bus.Publish(CreateEventMessage(eventMessage));
 }
Ejemplo n.º 30
0
 public PublishedEvent(IPublishableEvent evnt) : base(evnt)
 {
 }
Ejemplo n.º 31
0
 IMessage IEventMessageFactory.CreateEventMessage(IPublishableEvent evnt)
 {
     return(new EventMessage <T>(evnt));
 }
Ejemplo n.º 32
0
        public void When_multiple_messages_are_published_and_a_specific_handler_is_register_oply_the_matching_events_should_be_received_at_the_handler()
        {
            var aDomainEventHandler = MockRepository.GenerateMock<IEventHandler<ADomainEvent>>();
            var bus = new InProcessEventBus();
            bus.RegisterHandler(aDomainEventHandler);

            var events = new IPublishableEvent[]
                             {
                                 CreateAEvent(), CreateADomainEvent(), CreateADomainEvent(), CreateAEvent(), CreateADomainEvent(), CreateAEvent(),
                                 CreateAEvent(), CreateADomainEvent(), CreateADomainEvent(), CreateAEvent(), CreateADomainEvent(), CreateAEvent()
                             };

            bus.Publish(events);

            aDomainEventHandler.AssertWasCalled(h => h.Handle(null), options => options.IgnoreArguments().Repeat.Times(6));
        }
Ejemplo n.º 33
0
 public EventMessage(IPublishableEvent evnt) : base(evnt)
 {
 }
Ejemplo n.º 34
0
 public void Publish(IPublishableEvent eventMessage)
 {
     //let event store dispatch messages
 }