/// <summary> /// Initializes a new instance of the <see cref="DurableClientFactory"/> class. /// </summary> /// <param name="defaultDurableClientOptions">Default Options to Build Durable Clients.</param> /// <param name="orchestrationServiceFactory">The factory used to create orchestration service based on the configured storage provider.</param> /// <param name="loggerFactory">The logger factory used for extension-specific logging and orchestration tracking.</param> /// <param name="durableTaskOptions">The configuration options for this extension.</param> /// <param name="messageSerializerSettingsFactory">The factory used to create <see cref="JsonSerializerSettings"/> for message settings.</param> public DurableClientFactory( IOptions <DurableClientOptions> defaultDurableClientOptions, IOptions <DurableTaskOptions> durableTaskOptions, IDurabilityProviderFactory orchestrationServiceFactory, ILoggerFactory loggerFactory, IMessageSerializerSettingsFactory messageSerializerSettingsFactory = null) { this.logger = loggerFactory.CreateLogger(DurableTaskExtension.LoggerCategoryName); this.durabilityProviderFactory = orchestrationServiceFactory; this.defaultDurableClientOptions = defaultDurableClientOptions.Value; this.durableTaskOptions = durableTaskOptions?.Value ?? new DurableTaskOptions(); this.MessageDataConverter = DurableTaskExtension.CreateMessageDataConverter(messageSerializerSettingsFactory); this.TraceHelper = new EndToEndTraceHelper(this.logger, this.durableTaskOptions.Tracing.TraceReplayEvents); }
private IDurableOrchestrationClient GetDurableClient(IOrchestrationServiceClient orchestrationServiceClientMockObject) { var storageProvider = new DurabilityProvider("test", new Mock <IOrchestrationService>().Object, orchestrationServiceClientMockObject, "test"); DurableClientOptions durableClientOptions = new DurableClientOptions { ConnectionName = "Storage", TaskHub = "TestTaskHub", }; DurableTaskOptions durableTaskOptions = new DurableTaskOptions(); DurableClientAttribute attribute = new DurableClientAttribute(durableClientOptions); MessagePayloadDataConverter messagePayloadDataConverter = new MessagePayloadDataConverter(new JsonSerializerSettings(), true); var traceHelper = new EndToEndTraceHelper(new NullLogger <EndToEndTraceHelper>(), durableTaskOptions.Tracing.TraceReplayEvents); var durableOrchestrationClient = (IDurableOrchestrationClient) new DurableClient(storageProvider, null, attribute, messagePayloadDataConverter, traceHelper, durableTaskOptions); return(durableOrchestrationClient); }
/// <summary> /// Gets a <see cref="IDurableClient"/> using configuration from a <see cref="DurableClientOptions"/> instance. /// </summary> /// <param name="durableClientOptions">options containing the client configuration parameters.</param> /// <returns>Returns a <see cref="IDurableClient"/> instance. The returned instance may be a cached instance.</returns> public IDurableClient CreateClient(DurableClientOptions durableClientOptions) { if (durableClientOptions == null) { throw new ArgumentException("Please configure 'DurableClientOptions'"); } if (string.IsNullOrWhiteSpace(durableClientOptions.TaskHub)) { throw new ArgumentException("Please provide value for 'TaskHub'"); } DurableClientAttribute attribute = new DurableClientAttribute(durableClientOptions); DurableClient client = this.cachedClients.GetOrAdd( attribute, attr => { DurabilityProvider innerClient = this.durabilityProviderFactory.GetDurabilityProvider(attribute); return(new DurableClient(innerClient, null, attribute, this.MessageDataConverter, this.TraceHelper, this.durableTaskOptions)); }); return(client); }
/// <summary> /// Initializes a new instance of the <see cref="DurableClientAttribute"/> class. /// </summary> /// <param name="durableClientOptions">Options to configure the IDurableClient created.</param> public DurableClientAttribute(DurableClientOptions durableClientOptions) { this.TaskHub = durableClientOptions.TaskHub; this.ConnectionName = durableClientOptions.ConnectionName; this.ExternalClient = durableClientOptions.IsExternalClient; }