/// <summary>
 /// 消息处理器已注册异常
 /// </summary>
 /// <param name="messageTypeName"></param>
 /// <param name="messageHandlerType"></param>
 /// <param name="registry"></param>
 /// <param name="innerException"></param>
 public MessageHandlerDuplicateRegistrationException(string messageTypeName, Type messageHandlerType, IMessageHandlerRegistry registry, Exception innerException)
     : base($"MessageHandler for message type \"{messageTypeName}\" has registerd by \"{messageHandlerType.FullName}\"  in \"{registry.RegistryName}\"", innerException)
 {
     MessageTypeName    = messageTypeName;
     MessageHandlerType = messageHandlerType;
     Registry           = registry;
 }
Ejemplo n.º 2
0
        public static IMessageHandlerRegistry BuildMessageHandlerRegistry(IMessageHandlerRegistry messageHandlerRegistry, IServiceProvider serviceProvider)
        {
            if (serviceProvider == null)
            {
                throw new ArgumentNullException(nameof(serviceProvider));
            }

            if (messageHandlerRegistry == null)
            {
                throw new ArgumentNullException(nameof(messageHandlerRegistry));
            }

            var options               = serviceProvider.GetService <IOptions <MessagingOptions> >()?.Value ?? new MessagingOptions();
            var processors            = options.MessageProcessors.ToImmutableArray();
            var partManager           = serviceProvider.GetRequiredService <ApplicationPartManager>();
            var messageHandlerFeature = new MessageHandlerFeature();

            partManager.PopulateFeature(messageHandlerFeature);

            var loggerFactory = serviceProvider.GetService <ILoggerFactory>();
            var logger        = loggerFactory?.CreateLogger("MessageHandlerRegistration");

            RegisterMessageHandlerTypes(messageHandlerFeature.MessageHandlers, messageHandlerRegistry, processors, logger);

            return(messageHandlerRegistry);
        }
Ejemplo n.º 3
0
 public MessageHandler(
     IMessageHandlerRegistry messageHandlerRegistry,
     ITypeCreator typeCreator
     )
 {
     _messageHandlerRegistry = messageHandlerRegistry;
     _typeCreator            = typeCreator;
 }
Ejemplo n.º 4
0
 public ConsumerConfiguration(IDictionary <string, string> configuration, IMessageHandlerRegistry messageHandlerRegistry,
                              IHandlerUnitOfWorkFactory unitOfWorkFactory, ITopicSubscriberScopeFactory topicSubscriberScopeFactory)
 {
     _configuration              = configuration;
     MessageHandlerRegistry      = messageHandlerRegistry;
     UnitOfWorkFactory           = unitOfWorkFactory;
     TopicSubscriberScopeFactory = topicSubscriberScopeFactory;
 }
Ejemplo n.º 5
0
 private static void RegisterMessageHandlerTypes(
     IEnumerable <Type> types,
     IMessageHandlerRegistry messageHandlerRegistry,
     ImmutableArray <IContextualProvider <IMessageProcessor> > processors,
     ILogger logger)
 {
     foreach (var type in types)
     {
         RegisterMessageHandlerType(type, messageHandlerRegistry, processors, logger);
     }
 }
Ejemplo n.º 6
0
        public MessageDispatcher(IMessageHandlerRegistry messageHandlerRegistry, IServiceProvider serviceProvider)
        {
            if (messageHandlerRegistry == null)
            {
                throw new ArgumentNullException(nameof(messageHandlerRegistry));
            }

            if (serviceProvider == null)
            {
                throw new ArgumentNullException(nameof(serviceProvider));
            }

            _messageHandlerRegistry = messageHandlerRegistry;
            _serviceProvider        = serviceProvider;
        }
Ejemplo n.º 7
0
        public LocalMessageDispatcher(IMessageHandlerRegistry messageHandlerRegistry, IHandlerUnitOfWorkFactory handlerUnitOfWorkFactory)
        {
            if (messageHandlerRegistry == null)
            {
                throw new ArgumentNullException(nameof(messageHandlerRegistry));
            }

            if (handlerUnitOfWorkFactory == null)
            {
                throw new ArgumentNullException(nameof(handlerUnitOfWorkFactory));
            }

            _messageHandlerRegistry = messageHandlerRegistry;
            _unitOfWorkFactory      = handlerUnitOfWorkFactory;
        }
Ejemplo n.º 8
0
        private static void RegisterMessageHandlerType(
            Type handlerType,
            IMessageHandlerRegistry messageHandlerRegistry,
            ImmutableArray <IContextualProvider <IMessageProcessor> > processors,
            ILogger logger)
        {
            var inspector         = new MessageHandlerInspector(handlerType);
            var memberDescriptors = inspector.GetHandlerDescriptors();

            foreach (var memberDescriptor in memberDescriptors)
            {
                var registration = CreateMessageHandlerRegistration(memberDescriptor, processors);
                messageHandlerRegistry.Register(registration);

                logger?.LogDebug($"Registered handler of type '{handlerType}' for message-type '{memberDescriptor.MessageType}'.");
            }
        }
        public NServiceBusDispatcher(IBuilder builder, ReadOnlySettings settings, JsonSerializerSettings jsonSettings)
        {
            _builder          = builder;
            _bus              = builder.Build <IBus>();
            _eventFactory     = builder.Build <IMessageCreator>();
            _mapper           = builder.Build <IMessageMapper>();
            _handlerRegistry  = builder.Build <IMessageHandlerRegistry>();
            _objectInvoker    = builder.Build <IInvokeObjects>();
            _parallelHandlers = settings.Get <Boolean>("ParallelHandlers");
            _maxRetries       = settings.Get <Int32>("MaxRetries");
            _dropEventFatal   = settings.Get <Boolean>("EventDropIsFatal");
            _maxQueueSize     = settings.Get <Int32>("MaxQueueSize");

            _invokeCache = new ConcurrentDictionary <String, IList <Type> >();

            var parallelism = settings.Get <Int32>("Parallelism");

            _parallelOptions = new ParallelOptions
            {
                MaxDegreeOfParallelism = parallelism,
            };

            _processor = new TaskProcessor(parallelism);
        }
        public RemoteMessageDispatcher(IMessageHandlerRegistry messageHandlerRegistry,
                                       IMessageRouterFactory messageRouterFactory,
                                       ITypeConversion typeConversion,
                                       IServiceProvider serviceProvider,
                                       ILogger <RemoteMessageDispatcher> logger)
        {
            if (messageHandlerRegistry == null)
            {
                throw new ArgumentNullException(nameof(messageHandlerRegistry));
            }

            if (messageRouterFactory == null)
            {
                throw new ArgumentNullException(nameof(messageRouterFactory));
            }

            if (typeConversion == null)
            {
                throw new ArgumentNullException(nameof(typeConversion));
            }

            if (serviceProvider == null)
            {
                throw new ArgumentNullException(nameof(serviceProvider));
            }

            _messageRouterFactory = messageRouterFactory;
            _typeConversion       = typeConversion;
            _serviceProvider      = serviceProvider;
            _logger = logger;

            _localMessageDispatcher = new MessageDispatcher(messageHandlerRegistry, serviceProvider);
            _messageRouter          = _messageRouterFactory.CreateMessageRouter(new SerializedMessageHandler(this));

            _lifetimeManager = BuildLifetimeManager();
        }
Ejemplo n.º 11
0
 public MessageDispatcher(IMessageListener messageListener, IMessageHandlerRegistry messageHandlerRegistry)
 {
     this.messageListener        = messageListener;
     this.messageHandlerRegistry = messageHandlerRegistry;
 }
 public MessageHandlerRegistryInitializer(
     IMessageHandlerRegistry commandFactory
     )
 {
     _commandRegistry = commandFactory;
 }
Ejemplo n.º 13
0
 public LocalMessageDispatcherBuilder WithMessageHandlerRegistry(IMessageHandlerRegistry messageHandlerRegistry)
 {
     _messageHandlerRegistry = messageHandlerRegistry;
     return(this);
 }
Ejemplo n.º 14
0
 public LocalMessageDispatcherBuilder()
 {
     _messageHandlerRegistry = Dummy.Of <IMessageHandlerRegistry>();
 }