Exemple #1
0
        /// <summary>
        /// Register client for messages
        /// </summary>
        protected virtual void RegisterForMessage()
        {
            MessageHandlerOptions options = new MessageHandlerOptions(ExceptionReceivedHandler);

            options.AutoComplete       = false;
            options.MaxConcurrentCalls = 1;
            CurrentSubscriptionClient.RegisterMessageHandler(MessageReceivedHandler, options);
        }
Exemple #2
0
        /// <summary>
        /// Handle the received message
        /// </summary>
        /// <param name="receivedMessage">message received from service bus</param>
        /// <param name="token">CanellationToken</param>
        /// <returns></returns>
        public async Task MessageReceivedHandler(Message receivedMessage, CancellationToken token)
        {
            try
            {
                // Process message from subscription.
                if (receivedMessage.UserProperties.ContainsKey(MessageFactory.MessageModePropertyName))
                {
                    var    prop     = receivedMessage.UserProperties[MessageFactory.MessageModePropertyName];
                    string propName = Convert.ToString(prop);
                    if (!string.IsNullOrEmpty(propName))
                    {
                        MessageModes messageMode;
                        bool         parsed = Enum.TryParse(propName, out messageMode);
                        if (parsed)
                        {
                            EventMessage msg = null;
                            switch (messageMode)
                            {
                            case MessageModes.Simple:
                                msg = ReaderHandler.GetSimpleMessage(receivedMessage, TypeToDeserialize, MessageDeserializer);
                                MessageReceived(msg, receivedMessage);
                                await CurrentSubscriptionClient.CompleteAsync(receivedMessage.SystemProperties.LockToken);

                                break;

                            case MessageModes.GZip:
                                msg = await ReaderHandler.GetZippedMessage(receivedMessage, TypeToDeserialize, MessageDeserializer);

                                MessageReceived(msg, receivedMessage);
                                await CurrentSubscriptionClient.CompleteAsync(receivedMessage.SystemProperties.LockToken);

                                break;

                            case MessageModes.Chunk:
                                msg = await ReaderHandler.GetChunkedMessage(receivedMessage, ChunkDictionary, TypeToDeserialize, MessageDeserializer);

                                await CurrentSubscriptionClient.CompleteAsync(receivedMessage.SystemProperties.LockToken);

                                if (msg != null)
                                {
                                    MessageReceived(msg, receivedMessage);
                                }
                                break;

                            case MessageModes.Storage:
                                msg = await ReaderHandler.GetStoredMessage(receivedMessage, Storage, TypeToDeserialize, MessageDeserializer);

                                MessageReceived(msg, receivedMessage);
                                await CurrentSubscriptionClient.CompleteAsync(receivedMessage.SystemProperties.LockToken);

                                break;

                            default:
                                break;
                            }
                        }
                    }
                }
            }
            catch
            {
                await CurrentSubscriptionClient.AbandonAsync(receivedMessage.SystemProperties.LockToken);

                throw;
            }
        }
Exemple #3
0
 /// <summary>
 /// Close the client
 /// </summary>
 /// <returns></returns>
 public async Task CloseAsync()
 {
     await CurrentSubscriptionClient.CloseAsync();
 }