Example #1
0
    /// <inheritdoc />
    public override async Task <ReprocessEventsFromResponse> ReprocessEventsFrom(ReprocessEventsFromRequest request, ServerCallContext context)
    {
        var response = new ReprocessEventsFromResponse();

        var getIds = GetEventHandlerId(request.ScopeId, request.EventHandlerId, out var eventHandler);

        if (!getIds.Success)
        {
            response.Failure = _exceptionToFailureConverter.ToFailure(getIds.Exception);
            return(response);
        }

        TenantId tenant = request.TenantId.ToGuid();

        Log.ReprocessEventsFrom(_logger, eventHandler.EventHandler, eventHandler.Scope, tenant, request.StreamPosition);

        var reprocessing = await _eventHandlers.ReprocessEventsFrom(eventHandler, tenant, request.StreamPosition).ConfigureAwait(false);

        if (!reprocessing.Success)
        {
            Log.FailedDuringReprocessing(_logger, reprocessing.Exception);
            response.Failure = _exceptionToFailureConverter.ToFailure(reprocessing.Exception);
        }

        return(response);
    }
Example #2
0
    /// <inheritdoc />
    public async Task ReprocessEventsFrom(EventHandlerId eventHandler, TenantId tenant, StreamPosition position, MicroserviceAddress runtime)
    {
        var client = _clients.CreateClientFor <EventHandlersClient>(runtime);

        var request = new ReprocessEventsFromRequest
        {
            ScopeId        = eventHandler.Scope.ToProtobuf(),
            EventHandlerId = eventHandler.EventHandler.ToProtobuf(),
            TenantId       = tenant.ToProtobuf(),
            StreamPosition = position,
        };

        var response = await client.ReprocessEventsFromAsync(request);

        if (response.Failure != null)
        {
            throw new ReprocessEventsFromFailed(response.Failure.Reason);
        }
    }