Пример #1
0
        public SqsQueueByName VerifyOrCreateQueue(string region, IMessageSerialisationRegister serialisationRegister, SqsConfiguration queueConfig)
        {
            var sqsclient = AWSClientFactory.CreateAmazonSQSClient(RegionEndpoint.GetBySystemName(region));
            var snsclient = AWSClientFactory.CreateAmazonSimpleNotificationServiceClient(RegionEndpoint.GetBySystemName(region));

            var queue = new SqsQueueByName(queueConfig.QueueName, sqsclient, queueConfig.RetryCountBeforeSendingToErrorQueue);

            var eventTopic = new SnsTopicByName(queueConfig.PublishEndpoint, snsclient, serialisationRegister);

            queue.EnsureQueueAndErrorQueueExistAndAllAttributesAreUpdated(queueConfig);

            if (!eventTopic.Exists())
            {
                eventTopic.Create();
            }

            if (!eventTopic.IsSubscribed(queue))
            {
                eventTopic.Subscribe(queue);
            }

            if (!queue.HasPermission(eventTopic))
            {
                queue.AddPermission(eventTopic);
            }

            return(queue);
        }
Пример #2
0
 protected SnsTopicBase(IMessageSerialisationRegister serialisationRegister, ILoggerFactory loggerFactory, SnsWriteConfiguration snsWriteConfiguration)
 {
     _serialisationRegister = serialisationRegister;
     _log      = loggerFactory.CreateLogger("JustSaying");
     _eventLog = loggerFactory.CreateLogger("EventLog");
     _snsWriteConfiguration = snsWriteConfiguration;
 }
 protected SnsTopicBase(IMessageSerialisationRegister serialisationRegister, ILoggerFactory loggerFactory, IMessageSubjectProvider messageSubjectProvider)
 {
     _serialisationRegister  = serialisationRegister;
     _messageSubjectProvider = messageSubjectProvider;
     _log      = loggerFactory.CreateLogger("JustSaying");
     _eventLog = loggerFactory.CreateLogger("EventLog");
 }
Пример #4
0
        public SqsQueueByName VerifyOrCreateQueue(string region, IMessageSerialisationRegister serialisationRegister, SqsConfiguration queueConfig)
        {
            var sqsclient = AWSClientFactory.CreateAmazonSQSClient(RegionEndpoint.GetBySystemName(region));
            var snsclient = AWSClientFactory.CreateAmazonSimpleNotificationServiceClient(RegionEndpoint.GetBySystemName(region));

            var queue = new SqsQueueByName(queueConfig.QueueName, sqsclient, queueConfig.RetryCountBeforeSendingToErrorQueue);

            var eventTopic = new SnsTopicByName(queueConfig.PublishEndpoint, snsclient, serialisationRegister);

            if (!queue.Exists())
                queue.Create(queueConfig.MessageRetentionSeconds, 0, queueConfig.VisibilityTimeoutSeconds, queueConfig.ErrorQueueOptOut, queueConfig.RetryCountBeforeSendingToErrorQueue);

            //Create an error queue for existing queues if they don't already have one
            if(queue.ErrorQueue != null && !queue.ErrorQueue.Exists())
                queue.ErrorQueue.Create(JustSayingConstants.MAXIMUM_RETENTION_PERIOD, JustSayingConstants.DEFAULT_CREATE_REATTEMPT, JustSayingConstants.DEFAULT_VISIBILITY_TIMEOUT, errorQueueOptOut: true);
            queue.UpdateRedrivePolicy(new RedrivePolicy(queueConfig.RetryCountBeforeSendingToErrorQueue, queue.ErrorQueue.Arn));

            if (!eventTopic.Exists())
                eventTopic.Create();

            if (!eventTopic.IsSubscribed(queue))
                eventTopic.Subscribe(queue);

            if (!queue.HasPermission(eventTopic))
                queue.AddPermission(eventTopic);

            return queue;
        }
Пример #5
0
 public SnsTopicByName(string topicName, IAmazonSimpleNotificationService client, IMessageSerialisationRegister serialisationRegister)
     : base(serialisationRegister)
 {
     TopicName = topicName;
     Client = client;
     Exists();
 }
        public SqsNotificationListener(
            SqsQueueBase queue,
            IMessageSerialisationRegister serialisationRegister,
            IMessageMonitor messagingMonitor,
            ILoggerFactory loggerFactory,
            Action <Exception, Amazon.SQS.Model.Message> onError = null,
            IMessageLockAsync messageLock = null,
            IMessageBackoffStrategy messageBackoffStrategy = null)
        {
            _queue            = queue;
            _messagingMonitor = messagingMonitor;
            onError           = onError ?? ((ex, message) => { });
            _log = loggerFactory.CreateLogger("JustSaying");

            _messageProcessingStrategy = new DefaultThrottledThroughput(_messagingMonitor);
            _messageHandlerWrapper     = new MessageHandlerWrapper(messageLock, _messagingMonitor);
            _messageDispatcher         = new MessageDispatcher(queue, serialisationRegister, messagingMonitor, onError, _handlerMap, loggerFactory, messageBackoffStrategy);

            Subscribers = new Collection <ISubscriber>();

            if (messageBackoffStrategy != null)
            {
                _requestMessageAttributeNames.Add(MessageSystemAttributeName.ApproximateReceiveCount);
            }
        }
Пример #7
0
 public SqsPublisher(RegionEndpoint region, string queueName, IAmazonSQS client,
                     int retryCountBeforeSendingToErrorQueue, IMessageSerialisationRegister serialisationRegister,
                     ILoggerFactory loggerFactory)
     : base(region, queueName, client, retryCountBeforeSendingToErrorQueue, loggerFactory)
 {
     _client = client;
     _serialisationRegister = serialisationRegister;
 }
Пример #8
0
        public SqsQueueByName EnsureTopicExistsWithQueueSubscribed(string region, IMessageSerialisationRegister serialisationRegister, SqsReadConfiguration queueConfig)
        {
            var queue = EnsureQueueExists(region, queueConfig);
            var eventTopic = EnsureTopicExists(region, serialisationRegister, queueConfig);
            EnsureQueueIsSubscribedToTopic(region, eventTopic, queue);

            return queue;
        }
Пример #9
0
 public SnsTopicByName(string topicName, IAmazonSimpleNotificationService client, IMessageSerialisationRegister serialisationRegister)
     : base(serialisationRegister)
 {
     _serialisationRegister = serialisationRegister;
     TopicName = topicName;
     Client    = client;
     Exists();
 }
Пример #10
0
        public SqsQueueByName EnsureTopicExistsWithQueueSubscribed(string region, IMessageSerialisationRegister serialisationRegister, SqsReadConfiguration queueConfig)
        {
            var queue      = EnsureQueueExists(region, queueConfig);
            var eventTopic = EnsureTopicExists(region, serialisationRegister, queueConfig);

            EnsureQueueIsSubscribedToTopic(region, eventTopic, queue);

            return(queue);
        }
Пример #11
0
 public SnsTopicByName(string topicName, IAmazonSimpleNotificationService client,
                       IMessageSerialisationRegister serialisationRegister,
                       ILoggerFactory loggerFactory, SnsWriteConfiguration snsWriteConfiguration)
     : base(serialisationRegister, loggerFactory, snsWriteConfiguration)
 {
     TopicName = topicName;
     Client    = client;
     _log      = loggerFactory.CreateLogger("JustSaying");
 }
Пример #12
0
 public SqsNotificationListener(SqsQueueBase queue, IMessageSerialisationRegister serialisationRegister, IMessageMonitor messagingMonitor, Action <Exception, Amazon.SQS.Model.Message> onError = null, IMessageLock messageLock = null)
 {
     _queue = queue;
     _serialisationRegister = serialisationRegister;
     _messagingMonitor      = messagingMonitor;
     _onError  = onError ?? ((ex, message) => { });
     _handlers = new Dictionary <Type, List <Func <Message, bool> > >();
     _messageProcessingStrategy = new MaximumThroughput();
     _messageLock = messageLock;
 }
Пример #13
0
        private static SnsTopicByName EnsureTopicExists(string region, IMessageSerialisationRegister serialisationRegister, SqsReadConfiguration queueConfig)
        {
            var snsclient = AWSClientFactory.CreateAmazonSimpleNotificationServiceClient(RegionEndpoint.GetBySystemName(region));
            var eventTopic = new SnsTopicByName(queueConfig.PublishEndpoint, snsclient, serialisationRegister);

            if (!eventTopic.Exists())
                eventTopic.Create();

            return eventTopic;
        }
Пример #14
0
 public SqsQueueByName EnsureTopicExistsWithQueueSubscribed(string region, IMessageSerialisationRegister serialisationRegister, string queueName, string topic, int messageRetentionSeconds, int visibilityTimeoutSeconds = 30, int? instancePosition = null)
 {
     return EnsureTopicExistsWithQueueSubscribed(region, serialisationRegister,
         new SqsReadConfiguration(SubscriptionType.ToTopic)
         {
             QueueName = queueName,
             Topic = topic,
             MessageRetentionSeconds = messageRetentionSeconds,
             VisibilityTimeoutSeconds = visibilityTimeoutSeconds,
             InstancePosition = instancePosition
         });
 }
Пример #15
0
 public SqsQueueByName VerifyOrCreateQueue(string region, IMessageSerialisationRegister serialisationRegister, string queueName, string topic, int messageRetentionSeconds, int visibilityTimeoutSeconds = 30, int? instancePosition = null)
 {
     return VerifyOrCreateQueue(region, serialisationRegister,
         new SqsConfiguration
         {
             QueueName = queueName,
             Topic = topic,
             MessageRetentionSeconds = messageRetentionSeconds,
             VisibilityTimeoutSeconds = visibilityTimeoutSeconds,
             InstancePosition = instancePosition
         });
 }
Пример #16
0
 public SqsQueueByName VerifyOrCreateQueue(string region, IMessageSerialisationRegister serialisationRegister, string queueName, string topic, int messageRetentionSeconds, int visibilityTimeoutSeconds = 30, int?instancePosition = null)
 {
     return(VerifyOrCreateQueue(region, serialisationRegister,
                                new SqsConfiguration
     {
         QueueName = queueName,
         Topic = topic,
         MessageRetentionSeconds = messageRetentionSeconds,
         VisibilityTimeoutSeconds = visibilityTimeoutSeconds,
         InstancePosition = instancePosition
     }));
 }
Пример #17
0
 public SqsQueueByName EnsureTopicExistsWithQueueSubscribed(string region, IMessageSerialisationRegister serialisationRegister, string queueName, string topic, int messageRetentionSeconds, int visibilityTimeoutSeconds = 30, int?instancePosition = null)
 {
     return(EnsureTopicExistsWithQueueSubscribed(region, serialisationRegister,
                                                 new SqsReadConfiguration(SubscriptionType.ToTopic)
     {
         QueueName = queueName,
         Topic = topic,
         MessageRetentionSeconds = messageRetentionSeconds,
         VisibilityTimeoutSeconds = visibilityTimeoutSeconds,
         InstancePosition = instancePosition
     }));
 }
Пример #18
0
        private static SnsTopicByName EnsureTopicExists(string region, IMessageSerialisationRegister serialisationRegister, SqsReadConfiguration queueConfig)
        {
            var snsclient  = AWSClientFactory.CreateAmazonSimpleNotificationServiceClient(RegionEndpoint.GetBySystemName(region));
            var eventTopic = new SnsTopicByName(queueConfig.PublishEndpoint, snsclient, serialisationRegister);

            if (!eventTopic.Exists())
            {
                eventTopic.Create();
            }

            return(eventTopic);
        }
        public SqsQueueByName EnsureTopicExistsWithQueueSubscribed(string region, IMessageSerialisationRegister serialisationRegister, SqsReadConfiguration queueConfig)
        {
            var regionEndpoint = RegionEndpoint.GetBySystemName(region);
            var queue          = EnsureQueueExists(region, queueConfig);
            var eventTopic     = EnsureTopicExists(regionEndpoint, serialisationRegister, queueConfig);

            EnsureQueueIsSubscribedToTopic(regionEndpoint, eventTopic, queue);

            var sqsclient = _awsClientFactory.GetAwsClientFactory().GetSqsClient(regionEndpoint);

            SqsPolicy.Save(eventTopic.Arn, queue.Arn, queue.Url, sqsclient);
            return(queue);
        }
Пример #20
0
        public JustSayingBus(IMessagingConfig config, IMessageSerialisationRegister serialisationRegister, ILoggerFactory loggerFactory)
        {
            _log = loggerFactory.CreateLogger("JustSaying");

            Config  = config;
            Monitor = new NullOpMessageMonitor();

            _subscribersByRegionAndQueue = new Dictionary <string, Dictionary <string, INotificationSubscriber> >();
            _publishersByRegionAndTopic  = new Dictionary <string, Dictionary <string, IMessagePublisher> >();
            SerialisationRegister        = serialisationRegister;
            _publishers  = new HashSet <IPublisher>();
            _subscribers = new HashSet <ISubscriber>();
        }
Пример #21
0
 public MessageDispatcher(
     SqsQueueBase queue, 
     IMessageSerialisationRegister serialisationRegister,
     IMessageMonitor messagingMonitor,
     Action<Exception, SQSMessage> onError,
     HandlerMap handlerMap)
 {
     _queue = queue;
     _serialisationRegister = serialisationRegister;
     _messagingMonitor = messagingMonitor;
     _onError = onError;
     _handlerMap = handlerMap;
 }
Пример #22
0
 public MessageDispatcher(
     SqsQueueBase queue,
     IMessageSerialisationRegister serialisationRegister,
     IMessageMonitor messagingMonitor,
     Action <Exception, SQSMessage> onError,
     HandlerMap handlerMap)
 {
     _queue = queue;
     _serialisationRegister = serialisationRegister;
     _messagingMonitor      = messagingMonitor;
     _onError    = onError;
     _handlerMap = handlerMap;
 }
Пример #23
0
 public MessageDispatcher(
     SqsQueueBase queue,
     IMessageSerialisationRegister serialisationRegister,
     IMessageMonitor messagingMonitor,
     Action <Exception, SQSMessage> onError,
     HandlerMap handlerMap,
     ILoggerFactory loggerFactory)
 {
     _queue = queue;
     _serialisationRegister = serialisationRegister;
     _messagingMonitor      = messagingMonitor;
     _onError    = onError;
     _handlerMap = handlerMap;
     _log        = loggerFactory.CreateLogger("JustSaying");
 }
Пример #24
0
        private SnsTopicByName EnsureTopicExists(RegionEndpoint region, IMessageSerialisationRegister serialisationRegister, SqsReadConfiguration queueConfig)
        {
            var snsclient = _awsClientFactory.GetAwsClientFactory().GetSnsClient(region);

            var eventTopic = _topicCache.TryGetFromCache(region.SystemName, queueConfig.PublishEndpoint);
            if (eventTopic != null)
                return eventTopic;

            eventTopic = new SnsTopicByName(queueConfig.PublishEndpoint, snsclient, serialisationRegister);
            _topicCache.AddToCache(region.SystemName, queueConfig.PublishEndpoint, eventTopic);

            if (!eventTopic.Exists())
                eventTopic.Create();

            return eventTopic;
        }
Пример #25
0
        private static readonly Logger Log = LogManager.GetLogger("JustSaying"); //ToDo: danger!

        public JustSayingBus(IMessagingConfig config, IMessageSerialisationRegister serialisationRegister)
        {
            if (config.PublishFailureReAttempts == 0)
            {
                Log.Warn("You have not set a re-attempt value for publish failures. If the publish location is 'down' you may loose messages!");
            }

            Log.Info(string.Format("Registering with stack."));

            Config  = config;
            Monitor = new NullOpMessageMonitor();

            _notificationSubscribers = new Dictionary <string, INotificationSubscriber>();
            _messagePublishers       = new Dictionary <string, Dictionary <Type, IMessagePublisher> >();
            SerialisationRegister    = serialisationRegister;
        }
Пример #26
0
        public SqsNotificationListener(
            SqsQueueBase queue,
            IMessageSerialisationRegister serialisationRegister,
            IMessageMonitor messagingMonitor,
            Action <Exception, Amazon.SQS.Model.Message> onError = null,
            IMessageLock messageLock = null)
        {
            _queue            = queue;
            _messagingMonitor = messagingMonitor;
            onError           = onError ?? ((ex, message) => { });

            _messageProcessingStrategy = new DefaultThrottledThroughput(_messagingMonitor);
            _messageHandlerWrapper     = new MessageHandlerWrapper(messageLock, _messagingMonitor);
            _messageDispatcher         = new MessageDispatcher(queue, serialisationRegister, messagingMonitor, onError, _handlerMap);

            Subscribers = new Collection <ISubscriber>();
        }
Пример #27
0
        protected override void Given()
        {
            Sqs                   = Substitute.For <IAmazonSQS>();
            Serialiser            = Substitute.For <IMessageSerialiser>();
            SerialisationRegister = Substitute.For <IMessageSerialisationRegister>();
            Monitor               = Substitute.For <IMessageMonitor>();
            Handler               = Substitute.For <IHandler <GenericMessage> >();
            var response = GenerateResponseMessage(_messageTypeString, Guid.NewGuid());

            Sqs.ReceiveMessage(Arg.Any <ReceiveMessageRequest>()).Returns(x => response, x => new ReceiveMessageResponse());

            SerialisationRegister.GeTypeSerialiser(_messageTypeString).Returns(new TypeSerialiser(typeof(GenericMessage), Serialiser));
            DeserialisedMessage = new GenericMessage {
                RaisingComponent = "Component"
            };
            Serialiser.Deserialise(Arg.Any <string>(), typeof(GenericMessage)).Returns(x => DeserialisedMessage);
        }
Пример #28
0
        protected override void Given()
        {
            Sqs = Substitute.For <IAmazonSQS>();
            SerialisationRegister = Substitute.For <IMessageSerialisationRegister>();
            Monitor = Substitute.For <IMessageMonitor>();
            Handler = Substitute.For <IHandler <GenericMessage> >();

            var response = GenerateResponseMessage(_messageTypeString, Guid.NewGuid());

            Sqs.ReceiveMessageAsync(
                Arg.Any <ReceiveMessageRequest>(),
                Arg.Any <CancellationToken>())
            .Returns(
                x => Task.FromResult(response),
                x => Task.FromResult(new ReceiveMessageResponse()));

            DeserialisedMessage = new GenericMessage {
                RaisingComponent = "Component"
            };
            SerialisationRegister.DeserializeMessage(Arg.Any <string>()).Returns(DeserialisedMessage);
        }
        private SnsTopicByName EnsureTopicExists(RegionEndpoint region, IMessageSerialisationRegister serialisationRegister, SqsReadConfiguration queueConfig)
        {
            var snsclient = _awsClientFactory.GetAwsClientFactory().GetSnsClient(region);

            var eventTopic = _topicCache.TryGetFromCache(region.SystemName, queueConfig.PublishEndpoint);

            if (eventTopic != null)
            {
                return(eventTopic);
            }

            eventTopic = new SnsTopicByName(queueConfig.PublishEndpoint, snsclient, serialisationRegister);
            _topicCache.AddToCache(region.SystemName, queueConfig.PublishEndpoint, eventTopic);

            if (!eventTopic.Exists())
            {
                eventTopic.Create();
            }

            return(eventTopic);
        }
Пример #30
0
        public SqsQueueByName EnsureTopicExistsWithQueueSubscribed(string region, IMessageSerialisationRegister serialisationRegister, SqsReadConfiguration queueConfig)
        {
            var regionEndpoint = RegionEndpoint.GetBySystemName(region);
            var queue = EnsureQueueExists(region, queueConfig);
            if (TopicExistsInAnotherAccount(queueConfig))
            {
                var sqsClient = _awsClientFactory.GetAwsClientFactory().GetSqsClient(regionEndpoint);
                var snsClient = _awsClientFactory.GetAwsClientFactory().GetSnsClient(regionEndpoint);
                var arnProvider = new ForeignTopicArnProvider(regionEndpoint, queueConfig.TopicSourceAccount, queueConfig.PublishEndpoint);
                snsClient.SubscribeQueue(arnProvider.GetArn(), sqsClient, queue.Url);
            }
            else
            {
                var eventTopic = EnsureTopicExists(regionEndpoint, serialisationRegister, queueConfig);
                EnsureQueueIsSubscribedToTopic(regionEndpoint, eventTopic, queue);

                var sqsclient = _awsClientFactory.GetAwsClientFactory().GetSqsClient(regionEndpoint);
                SqsPolicy.Save(eventTopic.Arn, queue.Arn, queue.Url, sqsclient);
            }

            return queue;
        }
Пример #31
0
        public SqsQueueByName EnsureTopicExistsWithQueueSubscribed(string region, IMessageSerialisationRegister serialisationRegister, SqsReadConfiguration queueConfig)
        {
            var regionEndpoint = RegionEndpoint.GetBySystemName(region);
            var queue          = EnsureQueueExists(region, queueConfig);

            if (TopicExistsInAnotherAccount(queueConfig))
            {
                var sqsClient   = _awsClientFactory.GetAwsClientFactory().GetSqsClient(regionEndpoint);
                var snsClient   = _awsClientFactory.GetAwsClientFactory().GetSnsClient(regionEndpoint);
                var arnProvider = new ForeignTopicArnProvider(regionEndpoint, queueConfig.TopicSourceAccount, queueConfig.PublishEndpoint);
                snsClient.SubscribeQueue(arnProvider.GetArn(), sqsClient, queue.Url);
            }
            else
            {
                var eventTopic = EnsureTopicExists(regionEndpoint, serialisationRegister, queueConfig);
                EnsureQueueIsSubscribedToTopic(regionEndpoint, eventTopic, queue);

                var sqsclient = _awsClientFactory.GetAwsClientFactory().GetSqsClient(regionEndpoint);
                SqsPolicy.Save(eventTopic.Arn, queue.Arn, queue.Url, sqsclient);
            }

            return(queue);
        }
Пример #32
0
 public SnsTopicByArn(string topicArn, IAmazonSimpleNotificationService client, IMessageSerialisationRegister serialisationRegister)
     : base(serialisationRegister)
 {
     Arn    = topicArn;
     Client = client;
 }
Пример #33
0
 public SqsPublisher(string queueName, IAmazonSQS client, int retryCountBeforeSendingToErrorQueue, IMessageSerialisationRegister serialisationRegister)
     : base(queueName, client, retryCountBeforeSendingToErrorQueue)
 {
     _client = client;
     _serialisationRegister = serialisationRegister;
 }
Пример #34
0
 public SnsTopicByArn(string topicArn, IAmazonSimpleNotificationService client, IMessageSerialisationRegister serialisationRegister)
     : base(serialisationRegister)
 {
     Arn = topicArn;
     Client = client;
 }
Пример #35
0
        private readonly IMessageSerialisationRegister _serialisationRegister; // ToDo: Grrr...why is this here even. GET OUT!

        #endregion Fields

        #region Constructors

        public SnsTopicBase(IMessageSerialisationRegister serialisationRegister)
        {
            _serialisationRegister = serialisationRegister;
        }
Пример #36
0
 public SnsTopicBase(IMessageSerialisationRegister serialisationRegister)
 {
     _serialisationRegister = serialisationRegister;
 }
Пример #37
0
 public SqsPublisher(RegionEndpoint region, string queueName, IAmazonSQS client, int retryCountBeforeSendingToErrorQueue, IMessageSerialisationRegister serialisationRegister)
     : base(region, queueName, client, retryCountBeforeSendingToErrorQueue)
 {
     _client = client;
     _serialisationRegister = serialisationRegister;
 }
Пример #38
0
 public SqsQueueByName EnsureTopicExistsWithQueueSubscribed(string region,
                                                            IMessageSerialisationRegister serialisationRegister, SqsReadConfiguration queueConfig)
 {
     return(EnsureTopicExistsWithQueueSubscribedAsync(region, serialisationRegister, queueConfig)
            .GetAwaiter().GetResult());
 }
Пример #39
0
        public async Task <SqsQueueByName> EnsureTopicExistsWithQueueSubscribedAsync(string region, IMessageSerialisationRegister serialisationRegister, SqsReadConfiguration queueConfig)
        {
            var regionEndpoint = RegionEndpoint.GetBySystemName(region);
            var sqsClient      = _awsClientFactory.GetAwsClientFactory().GetSqsClient(regionEndpoint);
            var snsClient      = _awsClientFactory.GetAwsClientFactory().GetSnsClient(regionEndpoint);

            var queue = await EnsureQueueExistsAsync(region, queueConfig).ConfigureAwait(false);

            if (TopicExistsInAnotherAccount(queueConfig))
            {
                var arnProvider = new ForeignTopicArnProvider(regionEndpoint, queueConfig.TopicSourceAccount, queueConfig.PublishEndpoint);

                await snsClient.SubscribeQueueAsync(arnProvider.GetArn(), sqsClient, queue.Url).ConfigureAwait(false);
            }
            else
            {
                var eventTopic = new SnsTopicByName(queueConfig.PublishEndpoint, snsClient, serialisationRegister, _loggerFactory);
                eventTopic.Create();

                await EnsureQueueIsSubscribedToTopic(eventTopic, queue).ConfigureAwait(false);

                await SqsPolicy.SaveAsync(eventTopic.Arn, queue.Arn, queue.Url, sqsClient).ConfigureAwait(false);
            }

            return(queue);
        }
Пример #40
0
 public SnsTopicByName(string topicName, IAmazonSimpleNotificationService client, IMessageSerialisationRegister serialisationRegister, ILoggerFactory loggerFactory, IMessageSubjectProvider messageSubjectProvider)
     : base(serialisationRegister, loggerFactory, messageSubjectProvider)
 {
     TopicName = topicName;
     Client    = client;
     _log      = loggerFactory.CreateLogger("JustSaying");
 }