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)); }
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; } }