< Summary

Class:Azure.Messaging.EventHubs.Samples.Sample08_PublishEventsWithCustomMetadata
Assembly:Azure.Messaging.EventHubs.Samples
File(s):C:\Git\azure-sdk-for-net\sdk\eventhub\Azure.Messaging.EventHubs\samples\Sample08_PublishEventsWithCustomMetadata.cs
Covered lines:0
Uncovered lines:19
Coverable lines:19
Total lines:83
Line coverage:0% (0 of 19)
Covered branches:0
Total branches:10
Branch coverage:0% (0 of 10)

Metrics

MethodCyclomatic complexity Line coverage Branch coverage
get_Name()-0%100%
get_Description()-0%100%
RunAsync()-0%0%

File(s)

C:\Git\azure-sdk-for-net\sdk\eventhub\Azure.Messaging.EventHubs\samples\Sample08_PublishEventsWithCustomMetadata.cs

#LineLine coverage
 1// Copyright (c) Microsoft Corporation. All rights reserved.
 2// Licensed under the MIT License.
 3
 4using System;
 5using System.Text;
 6using System.Threading.Tasks;
 7using Azure.Messaging.EventHubs.Producer;
 8using Azure.Messaging.EventHubs.Samples.Infrastructure;
 9
 10namespace Azure.Messaging.EventHubs.Samples
 11{
 12    /// <summary>
 13    ///   An example of publishing events, extending the event data with custom metadata.
 14    /// </summary>
 15    ///
 16    public class Sample08_PublishEventsWithCustomMetadata : IEventHubsSample
 17    {
 18        /// <summary>
 19        ///   The name of the sample.
 20        /// </summary>
 21        ///
 022        public string Name => nameof(Sample08_PublishEventsWithCustomMetadata);
 23
 24        /// <summary>
 25        ///   A short description of the sample.
 26        /// </summary>
 27        ///
 028        public string Description => "An example of publishing events, extending the event data with custom metadata.";
 29
 30        /// <summary>
 31        ///   Runs the sample using the specified Event Hubs connection information.
 32        /// </summary>
 33        ///
 34        /// <param name="connectionString">The connection string for the Event Hubs namespace that the sample should tar
 35        /// <param name="eventHubName">The name of the Event Hub, sometimes known as its path, that she sample should ru
 36        ///
 37        public async Task RunAsync(string connectionString,
 38                                   string eventHubName)
 39        {
 40            // We will start by creating a producer client, using its default options.
 41
 042            await using (var producerClient = new EventHubProducerClient(connectionString, eventHubName))
 43            {
 44                // Because an event consists mainly of an opaque set of bytes, it may be difficult for consumers of thos
 45                // make informed decisions about how to process them.
 46                //
 47                // In order to allow event publishers to offer better context for consumers, event data may also contain
 48                // in the form of a set of key/value pairs.  This metadata is not used by, or in any way meaningful to, 
 49                // service; it exists only for coordination between event publishers and consumers.
 50                //
 51                // One common scenario for the inclusion of metadata is to provide a hint about the type of data contain
 52                // so that consumers understand its format and can deserialize it appropriately.
 53                //
 54                // We will publish a small batch of events based on simple sentences, but will attach some custom metada
 55                // pretend type names and other hints.  Note that the set of metadata is unique to an event; there is no
 56                // event in a batch to have the same metadata properties available nor the same data type for those prop
 57
 058                var firstEvent = new EventData(Encoding.UTF8.GetBytes("Hello, Event Hubs!"));
 059                firstEvent.Properties.Add("EventType", "com.microsoft.samples.hello-event");
 060                firstEvent.Properties.Add("priority", 1);
 061                firstEvent.Properties.Add("score", 9.0);
 62
 063                var secondEvent = new EventData(Encoding.UTF8.GetBytes("Goodbye, Event Hubs!"));
 064                secondEvent.Properties.Add("EventType", "com.microsoft.samples.goodbye-event");
 065                secondEvent.Properties.Add("priority", "17");
 066                secondEvent.Properties.Add("blob", true);
 67
 068                using EventDataBatch eventBatch = await producerClient.CreateBatchAsync();
 069                eventBatch.TryAdd(firstEvent);
 070                eventBatch.TryAdd(secondEvent);
 71
 072                await producerClient.SendAsync(eventBatch);
 73
 074                Console.WriteLine("The event batch has been published.");
 075            }
 76
 77            // At this point, our client has passed its "using" scope and has safely been disposed of.  We
 78            // have no further obligations.
 79
 080            Console.WriteLine();
 081        }
 82    }
 83}