public Task StartAsync(CancellationToken cancellationToken)
        {
            var linkedToken = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken, _cancellationTokenSource.Token).Token;

            var count = 0;

            _timer = new Timer(async c =>
            {
                count++;

                var requestClient = _configuredSendEndpointProvider.GetRequestClient <ICommand, IResponse>();
                var command       = new { Count = count, CorrelationId = Guid.NewGuid() };
                var responseTask  = requestClient.Request(command, linkedToken);
                _logger.LogInformation($"{command.CorrelationId} Produced-Command-{command.Count}");

                // Or fire and forget
                // var endpoint = await _configuredSendEndpointProvider.GetSendEndpoint<ICommand>();
                // await endpoint.Send<ICommand>(command, linkedToken);

                try
                {
                    var response = await responseTask;
                    _logger.LogInformation($"{response.CorrelationId} Received-Response-{response.Count}");
                }
                catch (Exception e)
                {
                    _logger.LogError($"{command.CorrelationId} Command-Fault-{command.Count} {e.Message}");
                }
            }, null, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(5));
            return(Task.CompletedTask);
        }
Beispiel #2
0
        protected override async Task ExecuteAsync(CancellationToken cancellationToken)
        {
            await Task.Delay(_options.InitialDelay, cancellationToken);

            var client = _provider.GetRequestClient <TRequest, TResponse>();

            var message = _factory();

            _logger.LogInformation($"[{message.CorrelationId}] Sending request-response message");

            _repository.AddPublished(message);
            var response = await client.Request(message, cancellationToken);

            _repository.AddResponse(response);
        }