Esempio n. 1
0
 public HybridCacheClient(ConnectionMultiplexer connectionMultiplexer)
 {
     _redisCache          = new RedisCacheClient(connectionMultiplexer);
     _localCache.MaxItems = 100;
     _messageBus          = new RedisMessageBus(connectionMultiplexer.GetSubscriber(), "cache");
     _messageBus.Subscribe <InvalidateCache>(OnMessage);
 }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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.");
        }