我正在使用.NET反应来构建一个producer.consumer模式。制作人从Kafka消息总线读取消息。读取消息后,需要将消息传递给消费者以处理消息。
我能够使用.NET反应式扩展(可观察和观察者)来做到这一点。但是,我想处理这样一种情况,即从总线读取消息的速度更快,消费者也会落后。我希望observable对反压做出反应,即如果observable表明它仍在处理早期的消息,则减慢可观察量。
// Create a subject of my custom object and make it observable
private readonly Subject<MyMessage> messageSubject = new Subject<MyMessage>();
messageSubject.AsObservable();
// add observer to the subject
_onMessageObservable.ObserveOn(NewThreadScheduler.Default)
// On receive of message, notify the observer
messageSubject.OnNext(msg.Value);