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);
        }