Example #1
0
        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);
        }
Example #2
0
        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));
        }