Beispiel #1
0
        public IServiceBusManager SubscribeEvent <T>(string serviceNamespace = null) where T : IEvent
        {
            var handler = _handlerFactory.ResolveEventHandler <T>();

            if (handler is null)
            {
                throw new InvalidOperationException("Please register the event handler for: " + typeof(T).Name);
            }
            var serviceFrom = GetServiceName <T>() ?? serviceNamespace;

            if (serviceFrom == null)
            {
                throw new InvalidOperationException("Please specify the namespace the message is coming from through the [MicroService] attribute or by passing it through this function");
            }

            string queueName = $"{_serviceSettings.Name}/{typeof(T).Name}";
            var    queue     = _serviceBusQueueFactory.CreateServiceBusQueue();

            queue.DeclareQueue(queueName);
            queue.Bind(serviceFrom, $"{serviceFrom}.{typeof(T).Name}");

            _serviceBusMessageSubscriber.Subscribe <T>(queueName, async(message, info) => await handler.HandleAsync(message, info));
            return(this);
        }