public static IBrokeredMessageReceiver CreateBrokeredMessageReceiver(this IBusFactorySelector selector, IBinder binder,
                                                                             Action <IWebJobReceiverConfigurator> configure)
        {
            if (binder == null)
            {
                throw new ArgumentNullException(nameof(binder));
            }

            if (configure == null)
            {
                throw new ArgumentNullException(nameof(configure));
            }

            var topologyConfiguration = new ServiceBusTopologyConfiguration(AzureBusFactory.MessageTopology);
            var busConfiguration      = new ServiceBusBusConfiguration(topologyConfiguration);

            ServiceBusHostConfigurator hostConfigurator = new ServiceBusHostConfigurator(new Uri("sb://no-host-configured/"));

            var hostConfiguration = busConfiguration.CreateHostConfiguration(hostConfigurator.Settings);

            var endpointConfiguration = new BrokeredMessageReceiverServiceBusEndpointConfiguration(hostConfiguration, busConfiguration);

            var configurator = new WebJobBrokeredMessageReceiverSpecification(binder, endpointConfiguration);

            configure(configurator);

            return(configurator.Build());
        }
示例#2
0
        /// <summary>
        /// Create a message dispatcher using the specified <see cref="IBinder"/>.
        /// </summary>
        /// <param name="binder"></param>
        /// <param name="logger">The function logger</param>
        /// <param name="cancellationToken"></param>
        /// <param name="configure"></param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException"></exception>
        public static IBrokeredMessageReceiver CreateBrokeredMessageReceiver(this IBinder binder, ILogger logger, CancellationToken cancellationToken,
                                                                             Action <IWebJobReceiverConfigurator> configure)
        {
            if (binder == null)
            {
                throw new ArgumentNullException(nameof(binder));
            }
            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }
            if (configure == null)
            {
                throw new ArgumentNullException(nameof(configure));
            }

            var topologyConfiguration = new ServiceBusTopologyConfiguration(AzureBusFactory.MessageTopology);
            IServiceBusBusConfiguration busConfiguration = new ServiceBusBusConfiguration(topologyConfiguration);

            var receiveEndpointConfiguration = busConfiguration.HostConfiguration.CreateReceiveEndpointConfiguration("unspecified");

            var configurator = new WebJobBrokeredMessageReceiverSpecification(binder, logger, receiveEndpointConfiguration, cancellationToken);

            configure(configurator);

            return(configurator.Build());
        }
示例#3
0
        public static IEventDataReceiver CreateEventDataReceiver(this IBusFactorySelector selector, IBinder binder,
                                                                 Action <IWebJobReceiverConfigurator> configure)
        {
            if (binder == null)
            {
                throw new ArgumentNullException(nameof(binder));
            }

            if (configure == null)
            {
                throw new ArgumentNullException(nameof(configure));
            }

            var topologyConfiguration = new ServiceBusTopologyConfiguration(AzureBusFactory.MessageTopology);
            var busConfiguration      = new ServiceBusBusConfiguration(topologyConfiguration);

            var queueConfigurator = new QueueConfigurator("no-host-configured")
            {
                AutoDeleteOnIdle = Defaults.TemporaryAutoDeleteOnIdle,
            };

            var settings = new ReceiveEndpointSettings("no-host-configured", queueConfigurator);

            var busEndpointConfiguration = busConfiguration.CreateReceiveEndpointConfiguration(settings, busConfiguration);

            var configurator = new WebJobEventDataReceiverSpecification(binder, busEndpointConfiguration);

            configure(configurator);

            return(configurator.Build());
        }
示例#4
0
        public static IEventDataReceiver CreateEventDataReceiver(this IBusFactorySelector selector, IBinder binder,
                                                                 Action <IWebJobReceiverConfigurator> configure)
        {
            if (binder == null)
            {
                throw new ArgumentNullException(nameof(binder));
            }

            if (configure == null)
            {
                throw new ArgumentNullException(nameof(configure));
            }

            var endpointConfiguration = new ServiceBusEndpointConfiguration(new ServiceBusTopologyConfiguration(AzureBusFactory.MessageTopology));

            var topologyConfiguration    = new ServiceBusTopologyConfiguration(AzureBusFactory.MessageTopology);
            var busConfiguration         = new ServiceBusBusConfiguration(topologyConfiguration);
            var busEndpointConfiguration = busConfiguration.CreateReceiveEndpointConfiguration(new Uri("sb://localhost/"), new Uri("sb://localhost/"));

            var configurator = new WebJobEventDataReceiverSpecification(binder, busEndpointConfiguration);

            configure(configurator);

            return(configurator.Build());
        }
示例#5
0
        /// <summary>
        /// Configure and create a bus for Azure Service Bus (later, we'll use Event Hubs instead)
        /// </summary>
        /// <param name="configure">The configuration callback to configure the bus</param>
        /// <returns></returns>
        public static IBusControl CreateUsingServiceBus(Action <IServiceBusBusFactoryConfigurator> configure)
        {
            var topologyConfiguration = new ServiceBusTopologyConfiguration(MessageTopology);
            var busConfiguration      = new ServiceBusBusConfiguration(topologyConfiguration);

            var configurator = new ServiceBusBusFactoryConfigurator(busConfiguration);

            configure(configurator);

            return(configurator.Build());
        }
示例#6
0
        /// <summary>
        /// Add the Azure Function support for MassTransit, which uses Azure Service Bus, and configures
        /// <see cref="IMessageReceiver"/> for use by functions to handle messages. Uses <see cref="ServiceBusOptions.ConnectionString"/>
        /// to connect to Azure Service Bus.
        /// </summary>
        /// <param name="services"></param>
        /// <param name="configure">Configure via <see cref="DependencyInjectionRegistrationExtensions.AddMassTransit"/>, to configure consumers, etc.</param>
        /// <param name="configureBus">Optional, configure the service bus settings</param>
        /// <returns></returns>
        public static IServiceCollection AddMassTransitForAzureFunctions(this IServiceCollection services, Action <IServiceCollectionConfigurator> configure,
                                                                         Action <IServiceBusBusFactoryConfigurator> configureBus = default)
        {
            var topologyConfiguration = new ServiceBusTopologyConfiguration(AzureBusFactory.MessageTopology);
            var busConfiguration      = new ServiceBusBusConfiguration(topologyConfiguration);

            ConfigureApplicationInsights(services);

            services.AddSingleton <IServiceBusBusConfiguration>(busConfiguration)
            .AddSingleton <IMessageReceiver, MessageReceiver>()
            .AddSingleton <IAsyncBusHandle, AsyncBusHandle>()
            .AddMassTransit(cfg =>
            {
                configure?.Invoke(cfg);

                cfg.AddBus(configureBus);
            });

            return(services);
        }