示例#1
0
        public static NotificationSubscription RegisterSubscription(
            this NotificationOptions options,
            NotificationDefinition notification,
            MethodInfo method,
            string messageParameterName,
            string taskQueue = null)
        {
            var subscription = new NotificationSubscription(notification, method, messageParameterName, taskQueue);

            options.NotificationSubscriptions.Add(subscription);
            return(subscription);
        }
示例#2
0
        public void RegisterSubscription(NotificationSubscription subscription)
        {
            if (!NotificationSubscriptions.TryGetValue(subscription.Notification, out var subscriptions))
            {
                subscriptions = new List <NotificationSubscription>();
                NotificationSubscriptions[subscription.Notification] = subscriptions;
            }

            if (subscriptions.Any(s => s.Notification == subscription.Notification && s.Method == subscription.Method))
            {
                throw new ArgumentException($"Already found subscription for topic to method Topic={subscription.Notification.Topic} Method={subscription.Method}");
            }

            if (null == _taskRegistry.GetTaskByMethod(subscription.Method))
            {
                throw new ArgumentException($"Method {subscription.Method} must be registered as task to accept notifications");
            }

            NotificationSubscriptions[subscription.Notification].Add(subscription);
        }