public DefaultMqttPersisterConnection(IMqttClientOptions mqttClientOptions, IEventBusLogger <DefaultMqttPersisterConnection> logger, BusOptions busOptions) { _asyncLock = new AsyncLock(); _options = mqttClientOptions; _logger = logger; _retryCount = busOptions?.RetryCount ?? 5; _client = CreareMqttClient(); _disconnectionCache = new Dictionary <string, MqttClientConnectionEventArgs>(); }
public EventProvider(IServiceProvider serviceProvider, ITopicPattenBuilder topicPattenBuilder, HashSet <EventOptions> eventOptions, IEventBusLogger <EventProvider> logger) { _topicPattenBuilder = topicPattenBuilder; _eventCreaters = eventOptions.ToDictionary(p => p.EventName, p => EventCreater.New(serviceProvider, p)); _eventOptions = eventOptions.ToDictionary(p => p.EventName); _eventNames = eventOptions.ToDictionary(p => p.EventType, p => p.EventName); _topicCreaters = eventOptions .Where(p => p.Topic.PatternType != null && _topicPattenBuilder.IsPattern(p.Topic.Pattern)) .ToDictionary(p => p.EventName, p => topicPattenBuilder.CreateTopicCreater(p.Topic.PatternType, p.Topic.Pattern).Compile()); _topics = eventOptions .Where(p => !_topicPattenBuilder.IsStaticTopic(p.Topic.Pattern)) .ToDictionary(p => p.EventName, p => p.Topic.Pattern); _logger = logger; }
public MqttEventBus( IMqttPersisterConnection mqttPersisterConnection, IEventProvider eventProvider, IConsumeMethodInvoker consumeMethodInvoker, IEventBusLogger <MqttEventBus> logger, IServiceScopeFactory scopeFactory, ISubscriptionsManager subsManager, BusOptions busOptions) { _mqttPersisterConnection = mqttPersisterConnection ?? throw new ArgumentNullException(nameof(mqttPersisterConnection)); _mqttPersisterConnection.ClientConnectionChanged += OnConnectionLostAsync; _eventProvider = eventProvider; _consumeMethodInvoker = consumeMethodInvoker; _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _subsManager = subsManager ?? throw new ArgumentNullException(nameof(ISubscriptionsManager)); _retryCount = busOptions?.RetryCount ?? 5; _scopeFactory = scopeFactory; _asyncLocker = new SemaphoreSlim(busOptions.MaxConcurrentCalls, busOptions.MaxConcurrentCalls); }