Se dice que Kafka es un sistema pub / subs sin bloqueo, ¿qué aspectos de un sistema pub / subs pueden considerarse bloqueantes o no bloqueantes?

Cuando pasa un mensaje a su productor de cliente Kafka, publicará con éxito o sin éxito ese mensaje en su clúster Kafka configurado. Kafka es “sin bloqueo” en el sentido de que si el código del cliente productor no puede enviar un mensaje, simplemente lo descartará después de un número configurable de reintentos y tiempos de espera. No utiliza ninguna llamada de función de bloqueo que ponga un hilo solicitante en suspensión o en algún tipo de cola de espera.

Si no desea perder esos mensajes descartados, depende de usted detectar el fracaso del cliente productor para producir mensajes. Luego puede volver a intentarlo, dejar de enviar datos al cliente productor en el código de su aplicación o hacer otra cosa que desee según la disponibilidad que desee que tenga su aplicación en caso de que su clúster Kafka caiga.

Cualquier interacción con un pub / subsistema puede considerarse bloqueante o no bloqueante, y cualquier interacción entre los corredores de mensajes en un clúster y cualquier manejo de datos dentro de un corredor de mensajes. Lo que debe decidir es si desea que su aplicación se bloquee si no puede publicar o consumir mensajes, o si desea que su aplicación continúe ejecutándose incluso si no puede publicar o consumir mensajes.