示例#1
0
        public MqSender(
            string exchange,
            IReadOnlyDictionary <string, string> topics,
            IConnection connection,
            IEventStringSerializer eventStringSerializer,
            IMessageSerializer messageSerializer,
            BatchOperator <IEvent> .Factory batchOperatorFactory,
            IBatchOperatorContainer batchOperatorContainer,
            ILogger <MqSender> logger,
            IOptions <ClaptrapServerOptions> options)
        {
            _exchange              = exchange;
            _topics                = topics;
            _connection            = connection;
            _eventStringSerializer = eventStringSerializer;
            _messageSerializer     = messageSerializer;
            _logger                = logger;
            _options               = options;
            var operatorKey = new BatchOperatorKey()
                              .With(nameof(MqSender))
                              .With(exchange);

            _batchOperator = (IBatchOperator <IEvent>)batchOperatorContainer.GetOrAdd(
                operatorKey, () => batchOperatorFactory.Invoke(
                    new BatchOperatorOptions <IEvent>
            {
                BufferTime  = TimeSpan.FromMilliseconds(10),
                BufferCount = 100,
                DoManyFunc  = (events, cacheData) => SendMany(events)
            }));
        }
示例#2
0
 public ClaptrapHandler(IActorProxyFactory actorProxyFactory,
                        IClaptrapDesignStore claptrapDesignStore,
                        IEventSerializer <EventJsonModel> eventSerializer,
                        IEventStringSerializer eventStringSerializer)
 {
     _actorProxyFactory     = actorProxyFactory;
     _eventSerializer       = eventSerializer;
     _eventStringSerializer = eventStringSerializer;
     _minionTypeCodes       = claptrapDesignStore.Where(x => x.IsMinion())
                              .GroupBy(x => x.ClaptrapMasterDesign !.ClaptrapTypeCode)
                              .ToDictionary(x => x.Key, x => x.Select(a => a.ClaptrapTypeCode));
 }
示例#3
0
 public MQSubscriberManager(
     ILogger <MQSubscriberManager> logger,
     IConnectionManager connectionManager,
     IEventStringSerializer eventStringSerializer,
     IClaptrapDesignStore claptrapDesignStore,
     IMessageSerializer messageSerializer,
     IMinionLocator minionLocator)
 {
     _logger                = logger;
     _connectionManager     = connectionManager;
     _eventStringSerializer = eventStringSerializer;
     _claptrapDesignStore   = claptrapDesignStore;
     _messageSerializer     = messageSerializer;
     _minionLocator         = minionLocator;
 }