static void ConfigureAQ(StandardConfigurer <ITransport> configurer, Func <IRebusLoggerFactory, OracleConnectionHelper> connectionProviderFactory, OracleAQTransportOptions options) { configurer.Register(context => { var rebusLoggerFactory = context.Get <IRebusLoggerFactory>(); var connectionProvider = connectionProviderFactory(rebusLoggerFactory); var transport = new OracleAQTransport(connectionProvider, options, rebusLoggerFactory); if (options.InitAQSchema) { OracleAQSchemaInitializer oracleAQSchemaInitializer = new OracleAQSchemaInitializer(rebusLoggerFactory, connectionProvider); oracleAQSchemaInitializer.EnsureQueueIsCreated(new OracleAQInitializationOptions() { InputQueueName = options.InputQueueName, TableName = options.TableName }); } return(transport); }); configurer.OtherService <ITimeoutManager>().Register(c => new DisabledTimeoutManager()); configurer.OtherService <IPipeline>().Decorate(c => { var pipeline = c.Get <IPipeline>(); return(new PipelineStepRemover(pipeline) .RemoveIncomingStep(s => s.GetType() == typeof(HandleDeferredMessagesStep))); }); }
/// <summary> /// Configures Rebus to use Oracle to transport messages as a one-way client (i.e. will not be able to receive any messages). /// The table specified by <paramref name="tableName"/> will be used to store messages. /// The message table will automatically be created if it does not exist. /// </summary> public static void UseOracleAQAsOneWayClient(this StandardConfigurer <ITransport> configurer, string connectionStringOrConnectionStringName, OracleAQTransportOptions options, bool enlistInAmbientTransaction = false) { ConfigureAQ(configurer, loggerFactory => new OracleConnectionHelper(connectionStringOrConnectionStringName, enlistInAmbientTransaction), options); OneWayClientBackdoor.ConfigureOneWayClient(configurer); }