public async Task PublishAsync(object message)
        {
            _logger.Trace("Getting message group name from message");
            var messageGroupName = MessageGroupHelper.GetMessageGroupName(message);

            TopicClient client = null;

            try
            {
                _logger.Debug($"Adding message to message group {messageGroupName}");

                client = TopicClient.CreateFromConnectionString(_connectionString, messageGroupName);
                await client.SendAsync(new BrokeredMessage(message){ MessageId = Guid.NewGuid().ToString() });

                _logger.Debug($"Message has been added to message group {messageGroupName}");
            }
            finally
            {
                if (client != null && !client.IsClosed)
                {
                    _logger.Debug("Closing topic message publisher");
                    await client.CloseAsync();
                }
            }
        }
        public async Task PublishAsync(object message)
        {
            var messageGroupName = MessageGroupHelper.GetMessageGroupName(message);

            var content = JsonConvert.SerializeObject(message);

            var queue = GetQueue(messageGroupName);
            await queue.AddMessageAsync(new CloudQueueMessage(content));
        }
示例#3
0
        public IMessageSubscriber <T> GetSubscriber <T>() where T : new()
        {
            _logger.Debug($"Getting subscriber of message type {typeof(T).FullName} from factory");

            var messageGroupName = MessageGroupHelper.GetMessageGroupName <T>();

            _logger.Debug($"Obtained message group name {messageGroupName} for subscriber of message type {typeof(T).FullName}");

            return(new TopicMessageSubscriber <T>(_connectionString, messageGroupName, _subscriptionName, _executionPolicy, _logger, _keepConnectionAlive));
        }
示例#4
0
        public async Task PublishAsync(object message)
        {
            var topicName        = MessageGroupHelper.GetMessageGroupName(message);
            var connectionString = GetConnectionString(message);

            TopicClient client = null;

            try
            {
                client = TopicClient.CreateFromConnectionString(connectionString, topicName);
                await client.SendAsync(new BrokeredMessage(message));
            }
            finally
            {
                if (client != null && !client.IsClosed)
                {
                    await client.CloseAsync();
                }
            }
        }
示例#5
0
        public async Task PublishAsync(object message)
        {
            var messageGroupName = MessageGroupHelper.GetMessageGroupName(message);

            var json = JsonConvert.SerializeObject(message);

            var directoryName = Path.Combine(_storageDirectory, messageGroupName);

            if (!Directory.Exists(directoryName))
            {
                Directory.CreateDirectory(directoryName);
            }

            var path = Path.Combine(directoryName, Guid.NewGuid() + ".json");

            using (var stream = new FileStream(path, FileMode.CreateNew, FileAccess.Write))
                using (var writer = new StreamWriter(stream))
                {
                    await writer.WriteAsync(json);

                    writer.Close();
                }
        }
        public async Task <BrokeredMessage> PeekAsync(object message)
        {
            var messageGroupName = MessageGroupHelper.GetMessageGroupName(message);
            var connectionString = GetConnectionString(message);

            TopicClient client = null;

            try
            {
                client = TopicClient.CreateFromConnectionString(connectionString, messageGroupName);
                return(await client.PeekAsync());
            }
            catch (System.Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (client != null && !client.IsClosed)
                {
                    await client.CloseAsync();
                }
            }
        }
        public async Task PublishAsync(object message)
        {
            var messageGroupName = MessageGroupHelper.GetMessageGroupName(message);

            await PublishAsync(message, messageGroupName);
        }
示例#8
0
        public void ShouldGetGroupNameIfOneExists()
        {
            var groupName = MessageGroupHelper.GetMessageGroupName(new TestClassWithGroupName());

            Assert.AreEqual("Test", groupName);
        }
示例#9
0
        public void ShouldReturnClassNameIfGroupNameIsEmpty()
        {
            var groupName = MessageGroupHelper.GetMessageGroupName(new TestClassWithEmptyGroupName());

            Assert.AreEqual(nameof(TestClassWithEmptyGroupName), groupName);
        }
        private SubscriptionClient GetClient(string subscriptionName)
        {
            var topicName = MessageGroupHelper.GetMessageGroupName <T>();

            return(SubscriptionClient.CreateFromConnectionString(_connectionString, topicName, subscriptionName));
        }
示例#11
0
        public void ShouldReturnClassNameIfGroupNameNotFound()
        {
            var groupName = MessageGroupHelper.GetMessageGroupName <TestClassWithoutGroupName>();

            Assert.AreEqual(nameof(TestClassWithoutGroupName), groupName);
        }
        public IMessageSubscriber <T> GetSubscriber <T>() where T : new()
        {
            var messageGroupName = MessageGroupHelper.GetMessageGroupName <T>();

            return(new FileSystemMessageSubscriber <T>(_storageDirectory, messageGroupName));
        }
        public IMessageSubscriber <T> GetSubscriber <T>() where T : new()
        {
            var messageGroupName = MessageGroupHelper.GetMessageGroupName <T>();

            return(new QueueMessageSubscriber <T>(_connectionString, messageGroupName));
        }