public HybridCacheClient(ConnectionMultiplexer connectionMultiplexer) { _redisCache = new RedisCacheClient(connectionMultiplexer); _localCache.MaxItems = 100; _messageBus = new RedisMessageBus(connectionMultiplexer.GetSubscriber(), "cache"); _messageBus.Subscribe <InvalidateCache>(OnMessage); }
public RedisAsyncState(RedisCacheStore redisCache, RedisMessageBus bus) : base(redisCache) { _bus = bus; // Subscribe to async state events (e.g. "Cancel") sent by other nodes in the web farm _bus.Subscribe(Channel, OnAsyncStateEvent); }
public async Task CanDisposeCacheAndQueueAndReceiveSubscribedMessages() { var muxer = SharedConnection.GetMuxer(); var messageBus1 = new RedisMessageBus(muxer.GetSubscriber(), "test-messages", loggerFactory: Log); var cache = new RedisCacheClient(muxer); Assert.NotNull(cache); var queue = new RedisQueue <SimpleWorkItem>(muxer); Assert.NotNull(queue); using (messageBus1) { using (cache) { using (queue) { await cache.SetAsync("test", "test", TimeSpan.FromSeconds(10)); await queue.DequeueAsync(new CancellationToken(true)); var countdown = new AsyncCountdownEvent(2); messageBus1.Subscribe <SimpleMessageA>(msg => { Assert.Equal("Hello", msg.Data); countdown.Signal(); }); await messageBus1.PublishAsync(new SimpleMessageA { Data = "Hello" }); await countdown.WaitAsync(TimeSpan.FromSeconds(2)); Assert.Equal(1, countdown.CurrentCount); cache.Dispose(); queue.Dispose(); await messageBus1.PublishAsync(new SimpleMessageA { Data = "Hello" }); await countdown.WaitAsync(TimeSpan.FromSeconds(2)); Assert.Equal(0, countdown.CurrentCount); } } } }
public void CanSendMessage() { if (_messageBus == null) { return; } var resetEvent = new AutoResetEvent(false); _messageBus.Subscribe <SimpleMessageA>(msg => { Assert.Equal("Hello", msg.Data); resetEvent.Set(); }); _messageBus.Publish(new SimpleMessageA { Data = "Hello" }); bool success = resetEvent.WaitOne(15000); Assert.True(success, "Failed to receive message."); }