public TopicRepository(AmazonAccountSettings amazonAccountSettings, IAmazonSnsFacade amazonSnsFacade)
        {
            amazonAccountSettings.Requires("amazonAccountSettings").IsNotNull();
            amazonSnsFacade.Requires("amazonSnsFacade").IsNotNull();

            this.amazonAccountSettings = amazonAccountSettings;
            this.amazonSnsFacade       = amazonSnsFacade;
        }
        public TopicRepository(AmazonAccountSettings amazonAccountSettings, IAmazonSnsFacade amazonSnsFacade)
        {
            amazonAccountSettings.Requires("amazonAccountSettings").IsNotNull();
            amazonSnsFacade.Requires("amazonSnsFacade").IsNotNull();

            this.amazonAccountSettings = amazonAccountSettings;
            this.amazonSnsFacade = amazonSnsFacade;
        }
        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;
        }
        public PublisherService(IAmazonSnsFacade amazonSnsFacade)
        {
            amazonSnsFacade.Requires().IsNotNull();

            this.amazonSnsFacade = amazonSnsFacade;
        }