示例#1
0
        public MassTransitBus(Uri address, IConsumePipe consumePipe, ISendEndpointProvider sendEndpointProvider,
                              IPublishEndpointProvider publishEndpointProvider, IBusHostCollection hosts,
                              IBusObserver busObservable, IBusTopology topology)
        {
            Address                  = address;
            _consumePipe             = consumePipe;
            _sendEndpointProvider    = sendEndpointProvider;
            _publishEndpointProvider = publishEndpointProvider;
            _busObservable           = busObservable;
            Topology                 = topology;
            _hosts = hosts;

            _publishEndpoint = new Lazy <IPublishEndpoint>(() => publishEndpointProvider.CreatePublishEndpoint(address));
        }
 /// <summary>
 /// Create a message scheduler that uses an external message scheduler, such as Quartz.NET or Hangfire, to
 /// schedule messages. This should not be used with the broker-specific message schedulers. Scheduled messages
 /// are published to the external message scheduler, rather than uses a preconfigured endpoint address.
 /// NOTE that this should only be used to schedule messages outside of a message consumer. Consumers should
 /// use the ScheduleSend extensions on ConsumeContext.
 /// </summary>
 /// <param name="publishEndpoint"></param>
 /// <param name="busTopology"></param>
 /// <returns></returns>
 public static IMessageScheduler CreateMessageScheduler(this IPublishEndpoint publishEndpoint, IBusTopology busTopology)
 {
     return(new MessageScheduler(new PublishScheduleMessageProvider(publishEndpoint), busTopology));
 }
        /// <summary>
        /// Create a message scheduler that uses an external message scheduler, such as Quartz.NET or Hangfire, to
        /// schedule messages. This should not be used with the broker-specific message schedulers.
        /// NOTE that this should only be used to schedule messages outside of a message consumer. Consumers should
        /// use the ScheduleSend extensions on ConsumeContext.
        /// </summary>
        /// <param name="busTopology"></param>
        /// <param name="schedulerEndpointAddress">The endpoint address of the scheduler service</param>
        /// <param name="sendEndpointProvider"></param>
        /// <returns></returns>
        public static IMessageScheduler CreateMessageScheduler(this ISendEndpointProvider sendEndpointProvider, IBusTopology busTopology,
                                                               Uri schedulerEndpointAddress)
        {
            Task <ISendEndpoint> GetSchedulerEndpoint()
            {
                return(sendEndpointProvider.GetSendEndpoint(schedulerEndpointAddress));
            }

            return(new MessageScheduler(new EndpointScheduleMessageProvider(GetSchedulerEndpoint), busTopology));
        }
 /// <summary>
 /// Create a message scheduler that uses the built-in transport message delay to schedule messages.
 /// NOTE that this should only be used to schedule messages outside of a message consumer. Consumers should
 /// use the ScheduleSend extensions on ConsumeContext.
 /// </summary>
 /// <param name="sendEndpointProvider"></param>
 /// <param name="busTopology"></param>
 /// <returns></returns>
 public static IMessageScheduler CreateDelayedMessageScheduler(this ISendEndpointProvider sendEndpointProvider, IBusTopology busTopology)
 {
     return(new MessageScheduler(new DelayedScheduleMessageProvider(sendEndpointProvider), busTopology));
 }
 public MessageScheduler(IScheduleMessageProvider provider, IBusTopology busTopology)
 {
     _provider    = provider;
     _busTopology = busTopology;
 }
示例#6
0
 /// <summary>
 /// Create a message scheduler that uses the Azure Service Bus ScheduleEnqueueTimeUtc property to
 /// schedule messages.
 /// NOTE that this should only be used to schedule messages outside of a message consumer. Consumers should
 /// use the ScheduleSend extensions on ConsumeContext.
 /// </summary>
 /// <param name="sendEndpointProvider"></param>
 /// <param name="busTopology"></param>
 /// <returns></returns>
 public static IMessageScheduler CreateServiceBusMessageScheduler(this ISendEndpointProvider sendEndpointProvider, IBusTopology busTopology)
 {
     return(new MessageScheduler(new ServiceBusScheduleMessageProvider(sendEndpointProvider), busTopology));
 }
示例#7
0
 /// <summary>
 /// Create a message scheduler that uses the built-in ActiveMQ scheduler to schedule messages.
 /// NOTE that this should only be used to schedule messages outside of a message consumer. Consumers should
 /// use the ScheduleSend extensions on ConsumeContext.
 /// </summary>
 /// <param name="sendEndpointProvider"></param>
 /// <param name="busTopology"></param>
 /// <returns></returns>
 public static IMessageScheduler CreateActiveMqMessageScheduler(this ISendEndpointProvider sendEndpointProvider, IBusTopology busTopology)
 {
     return(new MessageScheduler(new ActiveMqScheduleMessageProvider(sendEndpointProvider), busTopology));
 }
        /// <summary>
        /// Create a message scheduler that uses the RabbitMQ Delayed Exchange plug-in to schedule messages.
        /// NOTE that this should only be used to schedule messages outside of a message consumer. Consumers should
        /// use the ScheduleSend extensions on ConsumeContext.
        /// </summary>
        /// <returns></returns>
        public static IMessageScheduler CreateRabbitMqMessageScheduler(this ISendEndpointProvider sendEndpointProvider, IBusTopology busTopology)
        {
            if (busTopology is IRabbitMqHostTopology topology)
            {
                return(new MessageScheduler(new DelayedExchangeScheduleMessageProvider(sendEndpointProvider, topology), topology));
            }

            throw new ArgumentException("A RabbitMQ bus is required to use the RabbitMQ message scheduler");
        }
示例#9
0
 public EndpointStartupMessageHandler(IBusTopology busTopology)
 {
     this.busTopology = busTopology;
 }
示例#10
0
 public EndpointControlService(IBus bus, IBusTopology busTopology)
 {
     this.bus         = bus;
     this.busTopology = busTopology;
 }