private async Task Producer(CancellationToken cancellationToken) { int producerCount = _cmdOptions.Count > 0 ? _cmdOptions.Count : 1; try { for (int i = 0; i < producerCount; i++) { if (cancellationToken.IsCancellationRequested) { break; } try { var messageData = new BusinessMessage { MessageId = i.ToString(), Content = $"我是内容_{i}", CreateTime = DateTime.Now }; //即时任务发布 await _messageBus.PublishAsync(messageData); //延迟任务发布 await _messageBus.PublishDelayAsync(messageData, TimeSpan.FromSeconds(5)); _logger.LogInformation($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff")}生产数据:MessageId={messageData.MessageId}"); //await Task.Delay(5); } catch (Exception ex) { _logger.LogError(ex, "生产消息出错"); throw; } } } catch (Exception ex) { _logger.LogError(ex, ""); } }
public static Task PublishDelayAsync <T>(this IRedisMessageBus messageBus, T message, TimeSpan delay) { return(messageBus.PublishDelayAsync(typeof(T), message, delay)); }