Esempio n. 1
0
        private static async Task <EventHubReceiver> CreateReceiver(EventHubPartitionSettings partitionSettings, string offset, Logger logger)
        {
            bool                  offsetInclusive = true;
            EventHubClient        client          = EventHubClient.CreateFromConnectionString(partitionSettings.Hub.ConnectionString, partitionSettings.Hub.Path);
            EventHubConsumerGroup consumerGroup   = client.GetConsumerGroup(partitionSettings.Hub.ConsumerGroup);

            if (partitionSettings.Hub.PrefetchCount.HasValue)
            {
                consumerGroup.PrefetchCount = partitionSettings.Hub.PrefetchCount.Value;
            }
            // if we have a starting offset or if we're not configured to start reading from utc now, read from offset
            if (!partitionSettings.Hub.StartFromNow || offset != EventHubConsumerGroup.StartOfStream)
            {
                logger.Info("Starting to read from EventHub partition {0}-{1} at offset {2}", partitionSettings.Hub.Path, partitionSettings.Partition, offset);
            }
            else
            {
                // to start reading from most recent data, we get the latest offset from the partition.
                PartitionRuntimeInformation patitionInfo =
                    await client.GetPartitionRuntimeInformationAsync(partitionSettings.Partition);

                offset          = patitionInfo.LastEnqueuedOffset;
                offsetInclusive = false;
                logger.Info("Starting to read latest messages from EventHub partition {0}-{1} at offset {2}", partitionSettings.Hub.Path, partitionSettings.Partition, offset);
            }
            return(await consumerGroup.CreateReceiverAsync(partitionSettings.Partition, offset, offsetInclusive));
        }
        public PartitionViewModel(PartitionRuntimeInformation info)
        {
            this.PartitionId    = info.PartitionId;
            BeginSequenceNumber = info.BeginSequenceNumber;
            LastSequenceNumber  = info.LastEnqueuedSequenceNumber;
            Offset = info.LastEnqueuedOffset;

            MessageCount = LastSequenceNumber - BeginSequenceNumber;
            if (MessageCount != 0)
            {
                MessageCount++;
            }
        }
        public PartitionViewModel(PartitionRuntimeInformation info)
        {
            this.PartitionId = info.PartitionId;
            BeginSequenceNumber = info.BeginSequenceNumber;
            LastSequenceNumber = info.LastEnqueuedSequenceNumber;
            Offset = info.LastEnqueuedOffset;

            MessageCount = LastSequenceNumber - BeginSequenceNumber;
            if (MessageCount != 0)
            {
                MessageCount++;
            }
        }
        static void Main(string[] args)
        {
            EventHubClient client       = EventHubClient.CreateFromConnectionString(connectionString, eventHubName);
            List <string>  countResults = new List <string>();

            countResults.Add(eventHubName);

            for (int partitionId = 0; partitionId < partitonCount; partitionId++)
            {
                PartitionRuntimeInformation item = client.GetPartitionRuntimeInformation(partitionId.ToString());
                long count = (item.LastEnqueuedSequenceNumber - (item.BeginSequenceNumber + 1));

                string countString = "Partition: " + partitionId + ", LastEnqueuedSequenceNumber: " + item.LastEnqueuedSequenceNumber + ", BeginSequenceNumber: " + item.BeginSequenceNumber + ", Count: " + count;
                countResults.Add(countString);

                WriteOutResults(countResults);
            }
        }
Esempio n. 5
0
        static async Task MonitorEventHub()
        {
            EventHubRuntimeInformation runtimeInfo = await _client.GetRuntimeInformationAsync();

            Console.WriteLine($"Partition count: {runtimeInfo.PartitionCount}");

            long[] sequenceNumbers = new long[runtimeInfo.PartitionCount];

            for (;;)
            {
                var tasks = new Task <PartitionRuntimeInformation> [runtimeInfo.PartitionCount];

                for (int i = 0; i < runtimeInfo.PartitionCount; i++)
                {
                    tasks[i] = _client.GetPartitionRuntimeInformationAsync(i.ToString());
                }

                // Wait for all of them
                await Task.WhenAll(tasks);

                for (int i = 0; i < runtimeInfo.PartitionCount; i++)
                {
                    PartitionRuntimeInformation part = tasks[i].GetAwaiter().GetResult();
                    Console.WriteLine($"BeginSequenceNumber: {part.BeginSequenceNumber}, LastEnqueuedOffset: {part.LastEnqueuedOffset}, LastEnqueuedSequenceNumber: {part.LastEnqueuedSequenceNumber}, LastEnqueuedTime: {part.LastEnqueuedTimeUtc}");

                    if (sequenceNumbers[i] != 0)
                    {
                        if (part.LastEnqueuedSequenceNumber != sequenceNumbers[i])
                        {
                            Console.WriteLine($"Sequence when up by {part.LastEnqueuedSequenceNumber - sequenceNumbers[i]} for partition {i}!");
                        }
                    }

                    sequenceNumbers[i] = part.LastEnqueuedSequenceNumber;
                }

                System.Threading.Thread.Sleep(5000);
            }
        }