private (Mock <IConnectionMultiplexer> MockConnectionMultiplexer, Mock <ISubscriber> MockSubscriber, Mock <ILogger> MockLogger, RedisDataManager RedisDataManager) MockRedisDataManager(Mock <IConnectionMultiplexerFactory> connectionMultiplexerFactory = null, RedisStreamOptions redisStreamOptions = null) { var mockConnectionMultiplexer = new Mock <IConnectionMultiplexer> { DefaultValue = DefaultValue.Mock }; var mockSubscriber = new Mock <ISubscriber> { DefaultValue = DefaultValue.Mock }; var mockLogger = new Mock <ILogger>() { DefaultValue = DefaultValue.Mock }; mockLogger.Setup(x => x.ForContext <RedisDataManager>()).Callback(() => { int j = 5; }).Returns(mockLogger.Object); mockConnectionMultiplexer .Setup(x => x.GetSubscriber(It.IsAny <object>())) .Returns(mockSubscriber.Object); var rdm = new RedisDataManager( redisStreamOptions ?? TestConstants.ValidRedisStreamOptions, connectionMultiplexerFactory?.Object ?? MockConnectionMultiplexerFactory.Returns(mockConnectionMultiplexer.Object), mockLogger.Object, TestConstants.ValidQueueName, TestConstants.ValidServiceId, TestConstants.ValidClusterId); return(mockConnectionMultiplexer, mockSubscriber, mockLogger, rdm); }
public async Task QueueMessageBatchAsync <T>(Guid streamGuid, string streamNamespace, IEnumerable <T> events, StreamSequenceToken token, Dictionary <string, object> requestContext) { if (token != null) { throw new ArgumentException("Redis stream provider currently does not support non-null StreamSequenceToken.", nameof(token)); } var queueId = _streamQueueMapper.GetQueueForStream(streamGuid, streamNamespace); if (!Queues.TryGetValue(queueId, out var queue)) { var tmpQueue = new RedisDataManager(_redisStreamOptions, _connectionMultiplexerFactory, _logger, queueId.ToString(), ServiceId, ClusterId); await tmpQueue.InitAsync(); queue = Queues.GetOrAdd(queueId, tmpQueue); } var redisMessage = _dataAdapter.ToRedisValue(streamGuid, streamNamespace, events, requestContext); await queue.AddQueueMessage(redisMessage); }