private Func <IAdapter <TKey, TValue>, IObservable <IEvent> > Apply(Command.Produce <TKey, TValue> produce)
 {
     return(adapter => adapter.Produce(produce, _scheduler));
 }
 public IObservable<IEvent> Produce(Command.Produce<TKey, TValue> produce, IScheduler scheduler)
 {
     return Observable
         .Start(() => _producer.Produce(produce.Topic, produce.Message, dr => _events.OnNext(new Event.Delivered<TKey, TValue>(dr))), scheduler)
         .SelectMany(_ => Observable.Empty<IEvent>());
 }