public Message[] Receive(int timeoutInMilliseconds) { EnsureSubscription(); var messages = _messageReceiver.Receive(_batchSize, TimeSpan.FromMilliseconds(timeoutInMilliseconds)).Result; var messagesToReturn = new List <Message>(); foreach (var azureServiceBusMessage in messages) { var messageBody = System.Text.Encoding.Default.GetString(azureServiceBusMessage.MessageBodyValue); var message = new Message(new MessageHeader(Guid.NewGuid(), _topicName, MessageType.MT_EVENT), new MessageBody(messageBody)); message.Header.Bag.Add(LockToken, azureServiceBusMessage.LockToken); messagesToReturn.Add(message); } return(messagesToReturn.ToArray()); }
public Message[] Receive(int timeoutInMilliseconds) { s_logger.LogDebug( "Preparing to retrieve next message(s) from topic {Topic} via subscription {ChannelName} with timeout {Timeout} and batch size {BatchSize}.", _topicName, _subscriptionName, timeoutInMilliseconds, _batchSize); IEnumerable <IBrokeredMessageWrapper> messages; EnsureSubscription(); var messagesToReturn = new List <Message>(); try { messages = _messageReceiver.Receive(_batchSize, TimeSpan.FromMilliseconds(timeoutInMilliseconds)).GetAwaiter().GetResult(); } catch (Exception e) { if (_messageReceiver.IsClosedOrClosing) { s_logger.LogDebug("Message Receiver is closing..."); var message = new Message(new MessageHeader(Guid.NewGuid(), _topicName, MessageType.MT_QUIT), new MessageBody(string.Empty)); messagesToReturn.Add(message); return(messagesToReturn.ToArray()); } s_logger.LogError(e, "Failing to receive messages."); //The connection to Azure Service bus may have failed so we re-establish the connection. GetMessageReceiverProvider(); throw new ChannelFailureException("Failing to receive messages.", e); } foreach (IBrokeredMessageWrapper azureServiceBusMessage in messages) { Message message = MapToBrighterMessage(azureServiceBusMessage); messagesToReturn.Add(message); } return(messagesToReturn.ToArray()); }