[英]Emit item on timeout in Observable
我有两个PublishSubject
,它们为接收和推送作业的队列建模。
我希望能够对从第一个PublishSubject
消耗的工作做出反应,但不能在给定的时间范围内(例如10s)放入第二个PublishSubject
:
final Subject<Job> queue = PublishSubject.<Job>create().toSerialized();
final Subject<Job> done = PublishSubject.<Job>create().toSerialized();
// this is probably wrong already since I am consuming items from queue
queue.subscribe(done::onNext);
final Observable<Job> timeOut = queue.timeout(10, SECONDS, Observable.empty()); // ??
经过10秒后,您还没有描述您实际想要做什么。 您是否要重新添加该作业以再次排队? 如果处理时间超过10秒,您是否只想获取信息,或者如果处理时间太长,是否要跳过该工作?
如果要跳过处理该作业并使用一些新的可观察到的内容继续,则可以对每个队列元素进行flatMap
并分别使它们timeout
。
Observable<Job> observableThatWillTriggerOnTimeout = ...
queue.flatMap(job -> dispatchJob(job)
.timeout(10, TimeUnit.SECONDS, observableThatWillTriggerOnTimeout)
)
详细介绍您的情况,如有必要,我将更新我的答案
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.