public async Task Schedule(ICommandDelivery <T> item) { await Task.Yield(); if (!scheduledIdempotencyTokens.TryAdd(item.IdempotencyToken)) { return; } pendingDeliveries.TryAdd(item.IdempotencyToken, item); clock.Schedule(async s => await Publish(item), after: item.DueTime); }
public void Subscribe(CircuitBreakerBrokerSubscriber subscriber) { if (subscriber == null) { throw new ArgumentNullException(nameof(subscriber)); } subscriber(stateDescriptor); subscribers.TryAdd(subscriber); }