public async Task PushMessageToSubscriberAsync <TMessage>(MessageSubscriberInfo messageSubscriberInfo, TMessage message) where TMessage : class { var serialized = messageSerializer.Serialize(message); await database.ListRightPushAsync(messageSubscriberInfo.QueueName, serialized); }
public async Task SubscribeAsync <TMessage>(MessageSubscriberInfo messageSubscriberInfo, Func <TMessage, Task> onMessageAsync) { var subscriber = connectionMultiplexer.GetSubscriber(); await subscriber.SubscribeAsync( messageSubscriberInfo.ExchangeName, async (redisChannel, value) => await onMessageAsync(messageSerializer.Deserialize <TMessage>(value))); }
public async Task <TMessage> GetNextMessageAsync <TMessage>(MessageSubscriberInfo messageSubscriberInfo) { var item = await database.ListLeftPopAsync(messageSubscriberInfo.QueueName); return(item.IsNull ? default(TMessage) : await Task.Run(() => messageSerializer.Deserialize <TMessage>(item))); }