public static IMessageDataRepository MessageDataRepositoryWithCallisto(string clientName, string database, IConfiguration configuration) { if (string.IsNullOrEmpty(database)) { throw new CallistoException("Please provide a database to the SagaRepository"); } CallistoConnectorOptions options = Helper.GetCallistoConnectionOptions(clientName, configuration); return(new MongoDbMessageDataRepository(options.CreateUrl(Helper.GetAppOptions(configuration)).ToString(), database)); }
internal static ISagaRegistrationConfigurator <TSaga> AddSagaWithCallisto <TSaga>(ISagaRegistrationConfigurator <TSaga> configurator, string clientName, string database, IConfiguration configuration) where TSaga : class, ISagaVersion { if (string.IsNullOrEmpty(database)) { throw new CallistoException("Please provide a database to the SagaRepository"); } CallistoConnectorOptions options = Helper.GetCallistoConnectionOptions(clientName, configuration); configurator.MongoDbRepository(options.CreateUrl(Helper.GetAppOptions(configuration)).ToString(), repositoryConfigurator => { repositoryConfigurator.DatabaseName = database; }); return(configurator); }
private static IMongoClient CreateFromOptions(CallistoConnectorOptions options, ApplicationOptions app) { CallistoJaegerEventListener eventListener = null; if (options.Trace) { if (GlobalTracer.Instance != null) { eventListener = new CallistoJaegerEventListener(GlobalTracer.Instance, new EventFilter(), Options.Create(new CallistoTracerOptions())); } } MongoUrl url = options.CreateUrl(app); MongoClientSettings settings = url.CreateMongoClientSettings(); if (eventListener != null) settings.ConfigureTracing(options.Trace, eventListener); return settings.CreateMongoClient(); }
public ICallistoClientConfigurator RegisterClient(string clientName, Action <ICallistoCollectionConfigurator> configureCollections) { Check.ThrowIfNullOrEmpty(clientName, nameof(clientName), new CallistoException("Please provide the name of the client that should be registered.")); _builder.AddBuildAction(new BuildAction($"Registering Callisto client with name: {clientName}") { Action = provider => { CallistoConnectorOptions clientOptions = _clients.GetCallistoConnectorOptions(clientName); if (clientOptions is null) { throw new CallistoException($"The options for client '{clientName}' was not found. Check the AppSettings file."); } var registry = provider.GetRequiredService <ICallistoClientRegistry>(); var eventListener = provider.GetRequiredService <ICallistoEventListener>(); ApplicationOptions appOptions = _builder.Configuration.GetApplicationOptions(); registry.AddClient(clientName, clientOptions.CreateUrl(appOptions) .CreateMongoClientSettings() .ConfigureTracing(clientOptions.Trace, eventListener) .CreateMongoClient() .CreateCallistoClient()); } });
private static MongoUrl CreateUrl(CallistoConnectorOptions options, ApplicationOptions app) { MongoUrl url = options.CreateUrl(app); return(url); }