public bool TryReadEvents(int maxCount, out IEnumerable <EventData> events) { if (!this.ShouldProduce) { events = null; return(false); } int count = maxCount; List <EventData> eventDataList = new List <EventData>(); while (count-- > 0) { this.SequenceNumberCounter.Increment(); var eventData = EventHubBatchContainer.ToEventData <int>(this.serializationManager, this.StreamId.Guid, this.StreamId.Namespace, this.GenerateEvent(this.SequenceNumberCounter.Value), RequestContext.Export(this.serializationManager)); #if NETSTANDARD //set partition key eventData.SetPartitionKey(this.StreamId.Guid.ToString()); #endif //set offset DateTime now = DateTime.UtcNow; var offSet = this.StreamId.Guid.ToString() + now.ToString(); eventData.SetOffset(offSet); //set sequence number eventData.SetSequenceNumber(this.SequenceNumberCounter.Value); //set enqueue time eventData.SetEnqueuedTimeUtc(now); eventDataList.Add(eventData); this.logger.Info($"Generate data of SequemceNumber {SequenceNumberCounter.Value} for stream {this.StreamId.Namespace}-{this.StreamId.Guid}"); } events = eventDataList; return(eventDataList.Count > 0); }
public virtual EventData ToQueueMessage <T>(StreamId streamId, IEnumerable <T> events, StreamSequenceToken token, Dictionary <string, object> requestContext) { if (token != null) { throw new ArgumentException("EventHub streams currently does not support non-null StreamSequenceToken.", nameof(token)); } return(EventHubBatchContainer.ToEventData(this.serializer, streamId, events, requestContext)); }
public Task QueueMessageBatchAsync <T>(Guid streamGuid, string streamNamespace, IEnumerable <T> events, StreamSequenceToken token, Dictionary <string, object> requestContext) { if (token != null) { throw new NotImplementedException("EventHub stream provider currently does not support non-null StreamSequenceToken."); } EventData eventData = EventHubBatchContainer.ToEventData(streamGuid, streamNamespace, events, requestContext); return(client.SendAsync(eventData)); }
/// <summary> /// Writes a set of events to the queue as a single batch associated with the provided streamId. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="streamGuid"></param> /// <param name="streamNamespace"></param> /// <param name="events"></param> /// <param name="token"></param> /// <param name="requestContext"></param> /// <returns></returns> public virtual Task QueueMessageBatchAsync <T>(Guid streamGuid, string streamNamespace, IEnumerable <T> events, StreamSequenceToken token, Dictionary <string, object> requestContext) { if (token != null) { throw new NotImplementedException("EventHub stream provider currently does not support non-null StreamSequenceToken."); } EventData eventData = EventHubBatchContainer.ToEventData(this.SerializationManager, streamGuid, streamNamespace, events, requestContext); #if NETSTANDARD return(client.SendAsync(eventData, streamGuid.ToString())); #else return(client.SendAsync(eventData)); #endif }