public async Task CanDisposeCacheAndQueueAndReceiveSubscribedMessages() { var muxer = SharedConnection.GetMuxer(); var messageBus1 = new RedisMessageBus(new RedisMessageBusOptions { Subscriber = muxer.GetSubscriber(), Topic = "test-messages", LoggerFactory = Log }); var cache = new RedisCacheClient(new RedisCacheClientOptions { ConnectionMultiplexer = muxer }); Assert.NotNull(cache); var queue = new RedisQueue <SimpleWorkItem>(new RedisQueueOptions <SimpleWorkItem> { ConnectionMultiplexer = muxer, LoggerFactory = Log }); 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); await messageBus1.SubscribeAsync <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 async void Start2() { IConnectionMultiplexer connectionMultiplexer = ConnectionMultiplexer.Connect("47.94.140.80:6379"); //ISubscriber subscriber = connectionMultiplexer.GetSubscriber(); IQueue <SimpleWorkItem> queue = new RedisQueue <SimpleWorkItem>(new RedisQueueOptions <SimpleWorkItem>() { ConnectionMultiplexer = (ConnectionMultiplexer)connectionMultiplexer });//Queue<SimpleWorkItem>(new InMemoryQueueOptions<SimpleWorkItem>()); var workItem2 = await queue.DequeueAsync(); workItem2.MarkCompleted(); Console.WriteLine($"queue333:{workItem2.Value.Data}"); }
//var workItem = await queue.DequeueAsync(); //Console.WriteLine($"queue:{workItem.Value.Data}"); public async void Start2() { IConnectionMultiplexer connectionMultiplexer = ConnectionMultiplexer.Connect("47.94.140.80:6379"); //ISubscriber subscriber = connectionMultiplexer.GetSubscriber(); IQueue <SimpleWorkItem> queue = new RedisQueue <SimpleWorkItem>(new RedisQueueOptions <SimpleWorkItem>() { ConnectionMultiplexer = (ConnectionMultiplexer)connectionMultiplexer });//Queue<SimpleWorkItem>(new InMemoryQueueOptions<SimpleWorkItem>()); // var DeadletterItems= await queue.GetDeadletterItemsAsync(); // var workItem = await queue.DequeueAsync(); //Task.Factory.StartNew( async () => //{ // Thread.Sleep(1000); // Console.WriteLine($"is work complete? :{workItem.IsCompleted}"); // Console.WriteLine($"queue222:{workItem.Value.Data}"); // await workItem.CompleteAsync(); //}); for (int i = 0; i < 10; i++) { var workItem2 = await queue.DequeueAsync(); if (workItem2 != null) { Console.WriteLine($"queue333:{workItem2.Value.Data}"); } } Console.WriteLine($" end of this time"); }