Beispiel #1
0
        private IUniqueMessage GetByUniqueKey(string messageUniqueKey, bool deleteAfterRead)
        {
            byte[] content             = null;
            string messageTypeAsString = null;

            using (IRedisTransaction transaction = this.provider.CreateTransaction())
            {
                transaction.GetHashBinaryValue(RedisTaskProcessorMessageQueue.MessageQueueContentKey, messageUniqueKey, value => content = value);
                transaction.GetHashTextValue(RedisTaskProcessorMessageQueue.MessageQueueContentKey, messageUniqueKey + "$Type", value => messageTypeAsString = value);

                if (deleteAfterRead)
                {
                    transaction.RemoveFromHash(RedisTaskProcessorMessageQueue.MessageQueueContentKey, messageUniqueKey, messageUniqueKey + "$Type");
                }

                transaction.Commit();
            }

            if (content == null)
            {
                // TODO: Trace warning ...
                return(null);
            }

            if (string.IsNullOrEmpty(messageTypeAsString))
            {
                // TODO: Trace warning ...
                return(null);
            }

            Type messageType = Type.GetType(messageTypeAsString, false);

            if (messageType == null)
            {
                // TODO: Trace warning ...
                return(null);
            }

            return((IUniqueMessage)this.serializer.Deserialize(content, messageType));
        }