¿Cómo puedo crear reactor de flujo de una cola de bloqueo?

vitthal.kumar.dhanuka:

Estoy tratando de poner en práctica un reactor de flujo creado de una BlockingQueue pero no está seguro de qué operador es mejor para mi caso de uso?

Estoy creando un punto extremo de apoyo de streaming, donde la respuesta es que las necesidades de flujo para mantener los mensajes que emite un BlockingQueue como respuesta a GET llamada REST.

Ya he probado foros y documentación y sólo se puede encontrar Flux inició a partir de colecciones iterables o fuentes de datos reactivos, pero no hay ejemplos de cualquier BlockingQueue.

bsideup:

Usted puede tratar de Flux # generar y cola # vistazo . Hemos de tener en cuenta que peekvolverá nullsi la cola está vacía, y no se puede utilizar en onNext.

Algo como:

Flux.generate(sink -> {
    val element = queue.peek();
    if (element == null) {
        sink.complete();
    } else {
        sink.next(element);
    }
});

También hay Flux # repeatWhen operador, en caso de que quiera volver a suscribirse a la cola después de que se considera vacío, por ejemplo, con:

flux.repeatWhen(it -> it.delayElements(ofSeconds(1)))

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=224514&siteId=1
Recomendado
Clasificación