internal static RabbitMessage ToCloudQueueMessage <T>(Guid streamGuid, string streamNamespace, IEnumerable <T> events, Dictionary <string, object> requestContext)
        {
            var rabbitQueueBatchMessage = new RabbitMessageQueueBatchContainer(streamGuid, streamNamespace, events.Cast <object>().ToList(), requestContext);
            var rawBytes = SerializationManager.SerializeToByteArray(rabbitQueueBatchMessage);

            return(new RabbitMessage(rawBytes));
        }
예제 #2
0
        public async Task QueueMessageBatchAsync <T>(Guid streamGuid, string streamNamespace, IEnumerable <T> events, StreamSequenceToken token,
                                                     Dictionary <string, object> requestContext)
        {
            var queueId = _streamQueueMapper.GetQueueForStream(streamGuid, streamNamespace);
            RabbitMessageQueueDataManager queue;

            if (!Queues.TryGetValue(queueId, out queue))
            {
                var tmpQueue = new RabbitMessageQueueDataManager(queueId.ToString(), DeploymentId, DataConnectionString);
                await tmpQueue.InitQueueAsync();

                queue = Queues.GetOrAdd(queueId, tmpQueue);
            }
            var cloudMsg = RabbitMessageQueueBatchContainer.ToCloudQueueMessage(streamGuid, streamNamespace, events, requestContext);
            await queue.AddQueueMessage(cloudMsg);
        }
 public async Task <IList <IBatchContainer> > GetQueueMessagesAsync(int maxCount)
 {
     try
     {
         var queueRef = _queue; // store direct ref, in case we are somehow asked to shutdown while we are receiving.
         if (queueRef == null)
         {
             return(new List <IBatchContainer>());
         }
         var count = maxCount < 0 || maxCount == QueueAdapterConstants.UNLIMITED_GET_QUEUE_MSG ?
                     MaxNumberOfMessagesToPeek : Math.Min(maxCount, MaxNumberOfMessagesToPeek);
         var task = queueRef.GetQueueMessages(count);
         _outstandingTask = task;
         var messages           = await task;
         var azureQueueMessages = messages
                                  .Select(msg => (IBatchContainer)RabbitMessageQueueBatchContainer.FromCloudQueueMessage(msg, _lastReadMessage++)).ToList();
         return(azureQueueMessages);
     }
     finally
     {
         _outstandingTask = null;
     }
 }