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); } } }
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()); }
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()); }
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); }
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))); }
public static PagedResult <MessageDTO> GetMessages(GetMessagesCriteria param, PartialRetrievingInfo pageInfo) { return(exceptionHandling(() => Instance.GetMessages(Token, param, pageInfo))); }