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