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); }
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); }