public async Task <Subscriber <T> > SubscribeAsync <T>(string subscriberId, Func <T, Task> onMessageAsync) where T : class { var subScriber = await subscriberFactory.CreateSubscriberAsync(subscriberId, onMessageAsync); await AddSubscriberAsync(subScriber); return(subScriber); }
public async Task SubscribeAsync() { Subscriber = await _subscriberFactory.CreateSubscriberAsync( $"assert_queue_{Guid.NewGuid().ToString().Replace("-", "_")}", _routingKey, 1); var subscriptionBuilder = SubscriptionBuilder.Create(); foreach (var eventType in _eventTypes.Distinct()) { subscriptionBuilder.AddSubscription(eventType, () => this); } Subscriber.Subscribe(subscriptionBuilder.Build()); }
public async Task <ISubscriber> CreateSubscriberAsync(string targetSubscriber, int prefetchcount, bool temporary) { if (string.IsNullOrEmpty(targetSubscriber)) { throw new ArgumentException("targetSubscriber argument can not be null or empty"); } string targetSubscriberDeadLetterQueueName = _modelNamingConventionController.GetDeadLetterQueueName(targetSubscriber); ISubscriber deadLetterSubscriber = await _subscriberFactory.CreateSubscriberAsync(targetSubscriberDeadLetterQueueName, temporary, null, 0, prefetchcount, false, new DeadLetterEventsSubscriptionSelector(_modelNamingConventionController), false); return(new DefaultDeadLetterSubscriber(deadLetterSubscriber, _modelNamingConventionController, _publisher, targetSubscriberDeadLetterQueueName)); }
public async Task <ITracker> CreateTrackerAsync(string name, bool temporary, IEnumerable <string> targetSubscriberNames, int retrycount, int prefetchcount) { if (string.IsNullOrEmpty(name)) { throw new ArgumentException("name argument can not be null or empty"); } if (targetSubscriberNames == null || !targetSubscriberNames.Any()) { throw new ArgumentException("targetSubscriberNames argument can not be null or empty"); } string trackingQueueName = _trackerNamingConventionController.GetTrackerQueueName(name); IEnumerable <string> trackerQueueRoutingKeys = _trackerNamingConventionController.GetTrackerQueueRoutingKeys(targetSubscriberNames); ISubscriber trackerQueueSubscriber = await _subscriberFactory.CreateSubscriberAsync(trackingQueueName, temporary, trackerQueueRoutingKeys, retrycount, prefetchcount, new TrackingEventsSubscriptionSelector(_modelNamingConventionController)); return(new DefaultTracker(trackerQueueSubscriber, _modelNamingConventionController)); }