Example #1
0
        public void Should_be_able_to_get_messages_from_a_queue()
        {
            var queue = managementClient.GetQueues().SingleOrDefault(x => x.Name == testQueue);

            if (queue == null)
            {
                throw new ApplicationException("Test queue has not been created");
            }

            var defaultExchange = new Exchange {
                Name = "amq.default", Vhost = vhostName
            };

            var properties = new Dictionary <string, string>
            {
                { "app_id", "management-test" }
            };

            var publishInfo = new PublishInfo(properties, testQueue, "Hello World", "string");

            managementClient.Publish(defaultExchange, publishInfo);

            var criteria = new GetMessagesCriteria(1, false);
            var messages = managementClient.GetMessagesFromQueue(queue, criteria);

            foreach (var message in messages)
            {
                Console.Out.WriteLine("message.Payload = {0}", message.Payload);
                foreach (var property in message.Properties)
                {
                    Console.Out.WriteLine("key: '{0}', value: '{1}'", property.Key, property.Value);
                }
            }
        }
Example #2
0
        public Task <IEnumerable <Message> > GetMessagesFromQueueAsync(Queue queue, GetMessagesCriteria criteria,
                                                                       CancellationToken cancellationToken = default(CancellationToken))
        {
            Ensure.ArgumentNotNull(queue, nameof(queue));

            return(PostAsync <GetMessagesCriteria, IEnumerable <Message> >(
                       $"queues/{SanitiseVhostName(queue.Vhost)}/{SanitiseName(queue.Name)}/get", criteria, cancellationToken));
        }
        protected override void RetrieveObjects(BodyArchitectAccessServiceClient client1, PartialRetrievingInfo pageInfo, EventHandler <GetMessagesCompletedEventArgs> operationCompleted)
        {
            GetMessagesCriteria criteria = new GetMessagesCriteria();

            criteria.SortAscending = false;
            client1.GetMessagesAsync(ApplicationState.Current.SessionData.Token, criteria, pageInfo);
            client1.GetMessagesCompleted -= operationCompleted;
            client1.GetMessagesCompleted += operationCompleted;
        }
        /// <summary>
        /// Returns messages from RabbitMQ.
        /// </summary>
        /// <param name="offset">Offset from start.</param>
        /// <param name="count">Count of messages.</param>
        /// <param name="clientId">Filter queues by client ID, empty string - do not filter.</param>
        /// <param name="messageTypeId">Filter queues by message type ID, empty string - do not filter.</param>
        /// <returns>Messages from RabbitMQ.</returns>
        public ServiceBusMessage[] GetMessages(int offset, int count, string clientId, string messageTypeId)
        {
            if (offset < 0)
            {
                throw new ArgumentOutOfRangeException(nameof(offset));
            }

            if (count < 1)
            {
                throw new ArgumentOutOfRangeException(nameof(count));
            }

            int skipped    = 0;
            var sbMessages = new List <ServiceBusMessage>();

            IEnumerable <RabbitMQQueue> queues = FilterQueues(_managementClient.GetQueuesAsync().Result, clientId, messageTypeId);

            foreach (var queue in queues)
            {
                skipped += queue.Messages;
                if (skipped > offset)
                {
                    string _clientId;
                    string _messageTypeId;
                    _namingManager.ParseQueueName(queue.Name, out _clientId, out _messageTypeId);
                    var client = new Client()
                    {
                        ID = _clientId
                    };
                    var messageType = new MessageType()
                    {
                        ID = _messageTypeId
                    };

                    int skipInQueue         = offset > 0 ? queue.Messages - (skipped - offset) : offset;
                    int getFromQueue        = Math.Min(queue.Messages, count + skipInQueue - sbMessages.Count);
                    var getMessagesCriteria = new GetMessagesCriteria(getFromQueue, Ackmodes.ack_requeue_true);

                    IEnumerable <RabbitMQMessage> rmqMessages = _managementClient.GetMessagesFromQueueAsync(queue, getMessagesCriteria).Result.Skip(skipInQueue);
                    foreach (var rmqMessage in rmqMessages)
                    {
                        ServiceBusMessage sbMessage = _messageConverter.ConvertFromMqFormat(Convert.FromBase64String(rmqMessage.Payload), null);
                        sbMessage.Recipient   = client;
                        sbMessage.MessageType = messageType;
                        sbMessages.Add(sbMessage);
                    }

                    if (sbMessages.Count == count)
                    {
                        break;
                    }
                }
            }

            return(sbMessages.ToArray());
        }
Example #5
0
        public IEnumerable <Message> GetMessagesFromQueue(Queue queue, GetMessagesCriteria criteria)
        {
            if (queue == null)
            {
                throw new ArgumentNullException("queue");
            }

            return(Post <GetMessagesCriteria, IEnumerable <Message> >(
                       string.Format("queues/{0}/{1}/get", SanitiseVhostName(queue.Vhost), SanitiseQueueName(queue.Name)),
                       criteria));
        }
        /// <summary>
        ///     Get messages from a queue.
        ///     Please note that the publish / get paths in the HTTP API are intended for
        ///     injecting test messages, diagnostics etc - they do not implement reliable
        ///     delivery and so should be treated as a sysadmin's tool rather than a
        ///     general API for messaging.
        /// </summary>
        /// <param name="source"></param>
        /// <param name="queue">The queue to retrieve from</param>
        /// <param name="criteria">The criteria for the retrieve</param>
        /// <param name="cancellationToken"></param>
        /// <returns>Messages</returns>
        public static IReadOnlyList <Message> GetMessagesFromQueue(
            [NotNull] this IManagementClient source,
            [NotNull] Queue queue,
            GetMessagesCriteria criteria,
            CancellationToken cancellationToken = default
            )
        {
            if (source == null)
            {
                throw new ArgumentNullException(nameof(source));
            }

            return(source.GetMessagesFromQueueAsync(queue, criteria, cancellationToken)
                   .GetAwaiter()
                   .GetResult());
        }
Example #7
0
        public void Should_be_able_to_get_messages_from_a_queue()
        {
            var queue = managementClient.GetQueues().SingleOrDefault(x => x.name == testQueue);

            if (queue == null)
            {
                throw new ApplicationException("Test queue has not been created");
            }

            var criteria = new GetMessagesCriteria(1, true);
            var messages = managementClient.GetMessagesFromQueue(queue, criteria);

            foreach (var message in messages)
            {
                Console.Out.WriteLine("message.payload = {0}", message.payload);
            }
        }
        public void All()
        {
            GetMessagesCriteria criteria = new GetMessagesCriteria();

            var                   profile  = (ProfileDTO)profiles[0].Tag;
            SessionData           data     = CreateNewSession(profile, ClientInformation);
            PartialRetrievingInfo pageInfo = new PartialRetrievingInfo();

            PagedResult <MessageDTO> result = null;

            RunServiceMethod(delegate(InternalBodyArchitectService service)
            {
                result = service.GetMessages(data.Token, criteria, pageInfo);
            });
            Assert.AreEqual(result.Items.Count, result.AllItemsCount);
            assert(result, 2, 3, 5);
        }
        public void SortByDate_Asc()
        {
            GetMessagesCriteria criteria = new GetMessagesCriteria();

            criteria.SortAscending = true;
            var                   profile  = (ProfileDTO)profiles[0].Tag;
            SessionData           data     = CreateNewSession(profile, ClientInformation);
            PartialRetrievingInfo pageInfo = new PartialRetrievingInfo();

            PagedResult <MessageDTO> result = null;

            RunServiceMethod(delegate(InternalBodyArchitectService service)
            {
                result = service.GetMessages(data.Token, criteria, pageInfo);
            });
            Assert.AreEqual(messages[2].GlobalId, result.Items[0].GlobalId);
            Assert.AreEqual(messages[3].GlobalId, result.Items[1].GlobalId);
            Assert.AreEqual(messages[5].GlobalId, result.Items[2].GlobalId);
        }
Example #10
0
        protected override PagedResult <MessageDTO> GetItemsMethod(PartialRetrievingInfo pageInfo)
        {
            var search = new GetMessagesCriteria();

            return(ServiceManager.GetMessages(search, pageInfo));
        }
 public PagedResult <MessageDTO> GetMessages(Token token, GetMessagesCriteria param, PartialRetrievingInfo pageInfo)
 {
     return(exceptionHandling(token, () => InternalService.GetMessages(token, param, pageInfo)));
 }
Example #12
0
 public static PagedResult <MessageDTO> GetMessages(GetMessagesCriteria param, PartialRetrievingInfo pageInfo)
 {
     return(exceptionHandling(() => Instance.GetMessages(Token, param, pageInfo)));
 }