Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
        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());
        }