public SubscriptionService(IResourceCounter resourceCounter, IAmazonSnsFacade amazonSnsFacade,
                                   IAmazonSqsFacade amazonSqsFacade, ISubscriberRepository subscriberRespoitroy, QueuePoller queuePoller)
        {
            resourceCounter.Requires("resourceCounter").IsNotNull();
            amazonSnsFacade.Requires("amazonSnsFacade").IsNotNull();
            amazonSqsFacade.Requires("amazonSqsFacade").IsNotNull();
            queuePoller.Requires("queuePoller").IsNotNull();
            subscriberRespoitroy.Requires("subscriberRespoitroy").IsNotNull();

            this.resourceCounter      = resourceCounter;
            this.amazonSnsFacade      = amazonSnsFacade;
            this.amazonSqsFacade      = amazonSqsFacade;
            this.subscriberRespoitroy = subscriberRespoitroy;
            this.queuePoller          = queuePoller;
        }
        public SubscriptionService(IResourceCounter resourceCounter, IAmazonSnsFacade amazonSnsFacade,
            IAmazonSqsFacade amazonSqsFacade, ISubscriberRepository subscriberRespoitroy, QueuePoller queuePoller)
        {
            resourceCounter.Requires("resourceCounter").IsNotNull();
            amazonSnsFacade.Requires("amazonSnsFacade").IsNotNull();
            amazonSqsFacade.Requires("amazonSqsFacade").IsNotNull();
            queuePoller.Requires("queuePoller").IsNotNull();
            subscriberRespoitroy.Requires("subscriberRespoitroy").IsNotNull();

            this.resourceCounter = resourceCounter;
            this.amazonSnsFacade = amazonSnsFacade;
            this.amazonSqsFacade = amazonSqsFacade;
            this.subscriberRespoitroy = subscriberRespoitroy;
            this.queuePoller = queuePoller;
        }
        internal XDAmazonListener(IIdentityProvider identityProvider, ISerializer serializer,
                                  ITopicRepository topicRepository,
                                  ISubscriberRepository subscriberRepository, ISubscriptionService subscriptionService)
        {
            identityProvider.Requires("identityProvider").IsNotNull();
            serializer.Requires("serializer").IsNotNull();
            topicRepository.Requires("topicRepository").IsNotNull();
            subscriberRepository.Requires("subscriberRepository").IsNotNull();
            subscriptionService.Requires("subscriptionService").IsNotNull();

            useLongLiveQueues         = identityProvider.Scope == IdentityScope.Machine;
            uniqueInstanceId          = identityProvider.GetUniqueId();
            this.serializer           = serializer;
            this.topicRepository      = topicRepository;
            this.subscriberRepository = subscriberRepository;
            this.subscriptionService  = subscriptionService;
        }
        internal XDAmazonListener(IIdentityProvider identityProvider, ISerializer serializer,
            ITopicRepository topicRepository,
            ISubscriberRepository subscriberRepository, ISubscriptionService subscriptionService)
        {
            identityProvider.Requires("identityProvider").IsNotNull();
            serializer.Requires("serializer").IsNotNull();
            topicRepository.Requires("topicRepository").IsNotNull();
            subscriberRepository.Requires("subscriberRepository").IsNotNull();
            subscriptionService.Requires("subscriptionService").IsNotNull();

            useLongLiveQueues = identityProvider.Scope == IdentityScope.Machine;
            uniqueInstanceId = identityProvider.GetUniqueId();
            this.serializer = serializer;
            this.topicRepository = topicRepository;
            this.subscriberRepository = subscriberRepository;
            this.subscriptionService = subscriptionService;
        }