Kafka transmite casos de uso para agregar una tienda global

Al definir una topología en flujos kafka, se puede agregar una tienda de estado global. Necesitará un tema fuente, así como a ProcessorSupplier. El procesador recibe registros y podría transformarlos teóricamente antes de agregarlos a la tienda. Pero en caso de restauración, los registros se insertan directamente desde el tema fuente (registro de cambios) en el almacén de estado global, omitiendo la eventual transformación realizada en el procesador.

   +-------------+             +-------------+              +---------------+
   |             |             |             |              |    global     |
   |source topic  ------------->  processor  +-------------->    state      |
   |(changelog)  |             |             |              |    store      |
   +-------------+             +-------------+              +---------------+
          |                                                         ^
          |                                                         |
          +---------------------------------------------------------+
              record directly inserted during restoration

StreamsBuilder # addGlobalStore (StoreBuilder storeBuilder, String topic, Consumed consume, ProcessorSupplier stateUpdateSupplier) Agrega un StateStore global a la topología.

Según la documentación

NOTA: no debe usar el procesador para insertar registros transformados en el almacén de estado global . Esta tienda utiliza el tema de origen como registro de cambios y durante la restauración insertará registros directamente desde el origen . Este ProcessorNode debe usarse para mantener actualizado StateStore.

Paralelamente, ya que el error principal está abierto actualmente en el rastreador de errores kafka: el procesador personalizado KAFKA-7663 suministrado en addGlobalStore no se utiliza al restaurar el estado del tema que explica exactamente lo que se indica en la documentación, pero parece ser un error aceptado.

Me pregunto si KAFKA-7663 es realmente un error o no. Según la documentación, parece haber sido diseñado de esta manera, en cuyo caso me cuesta entender el caso de uso.
¿Alguien puede explicar los principales casos de uso de esta API de bajo nivel? Lo único que se me ocurre es procesar efectos secundarios, como por ejemplo, realizar algunas operaciones de registro en el procesador.

Pregunta adicional: si el tema de origen actúa como el registro de cambios de la tienda global, cuando un registro se elimina del tema porque la retención ha expirado, ¿se eliminará de la tienda de estado global? O la eliminación solo tendrá lugar en la tienda después de una restauración completa de la tienda desde el registro de cambios.

Respuesta 1

Estoy experimentando con procesadores de anotaciones de Java. Puedo escribir pruebas de integración usando el "JavaCompiler" (de hecho, estoy usando "Hickory" en este momento). Puedo ejecutar el proceso de compilación y analizar ...

Estoy escribiendo un archivo STL que consiste en un encabezado de 80 bytes, un entero de 4 bytes, y luego registros de 50 bytes, cada uno compuesto por flotantes y un entero corto. Usando un RandomAccessFile puedo escribir fácilmente ...

las dos formas que sé para obtener la URL de la página son: 1.a través de la clase de applet: Applet.getDocumentBase () 2.a través de la biblioteca de JavaScript de netscape: JSObject.getWindow (this) .eval ("location.href") Primero, ...

En este bonito artículo sobre JMS, Bruce Snyder (Autor de "ActiveMQ en acción") menciona: [una] de las opciones para implementar un escucha de mensajes para usar con Spring DMLC es usar javax.jms ...