public static async Task <EventHubsConnectionStringBuilder> GetEventHubConnectionStringBuilder(string sectionName, Action <string> onFailure, CancellationToken ct) { var configuration = new FabricConfigurationProvider(sectionName); if (!configuration.HasConfiguration) { await configuration.RejectConfigurationAsync($"No {sectionName} section", onFailure, ct).ConfigureAwait(false); return(null); } try { var endpointAddress = await configuration.TryReadConfigurationAsync("EndpointAddress", onFailure, ct).ConfigureAwait(false); var builder = new EventHubsConnectionStringBuilder( new Uri($"amqps://{endpointAddress}"), await configuration.TryReadConfigurationAsync("EntityPath", onFailure, ct).ConfigureAwait(false), await configuration.TryReadConfigurationAsync("SharedAccessKeyName", onFailure, ct).ConfigureAwait(false), await configuration.TryReadConfigurationAsync("SharedAccessKey", onFailure, ct).ConfigureAwait(false) ); return(builder); } catch (Exception ex) { ct.ThrowIfCancellationRequested(); #pragma warning disable ERP023 // Only ex.Message property was observed in exception block! await configuration.RejectConfigurationAsync($"Exception creating connection string builder: {ex.Message}", onFailure, ct).ConfigureAwait(false); #pragma warning restore ERP023 // Only ex.Message property was observed in exception block! return(null); } }
protected virtual async Task <Configuration> TryConfigureAsync(CancellationToken ct) { try { void onFailure(string msg) => Log.Error("Error configuring: {Msg}", msg); var client = await EventHubConfiguration.GetEventHubClientAsync(ConfigurationSectionName, onFailure, ct).ConfigureAwait(false); var configuration = new FabricConfigurationProvider(ConfigurationSectionName); var consumerGroup = await configuration.TryReadConfigurationAsync("ConsumerGroup", onFailure, ct).ConfigureAwait(false); var partitions = await GetPartitionsAsync(client).ConfigureAwait(false); var offsets = await StateManager.GetOrAddAsync <IReliableDictionary <string, string> >(OffsetsName).ConfigureAwait(false); return(new Configuration(client, consumerGroup, partitions, offsets)); } catch (Exception ex) { ct.ThrowIfCancellationRequested(); Log.Fatal(ex, "Error configuring event hubs: {Exception}", ex.Message); throw; } }