apache / apache/pulsar-client-cpp

[pulsar-client-cpp] Partition key from producer does arrive in broker

Abierto
#111 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
C++
Estrellas
71
Forks
90
Merge medio
2 h 33 min
PR fusionados (30 d)
3

Descripción

**Describe the bug**
When using the Java client producer, the setting of Key in MessageBuilder correctly coveys this metadata to the broker. C++ client consumers can then successfully use _Key_Shared_ subscription on this topic and we're seeing the expected keys-based consumption behavior.

However, when we use a C++ client producer, we do not get a "shared key" consumption behavior over the subscribed consumers.

**To Reproduce**
Steps to reproduce the behavior:
1. Initiate a Java client producer. Add a Key to the MessageBuidler.
2. Send messages using the MessageBuilder
3. Initiate two C++ consumers using the "Key_Shared" subscription
4. See key-based distributed messages over the consumers.
5. Now stop the Java client producer
6. Start a CPP client producer that sets the same metadata
7. Now only one of the C++ client consumers retrieves all messages

**Expected behavior**
We'd expect to see the same "key-shared" message distribution over the consumers with a C++ client producer as with its Java equivalent.

**Additional context**
We suspect a difference in the protobuf schema between the Java and C++ client producers for setting the partition or ordering key and conveying this metadata to the broker. It seems that the broker does not receive the message metadata from the C++ client producer correctly.

NB: We are using the same version of C++ client and broker (both from Pulsar v2.5.0).

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Comience con el MessageBuilder del productor de C++ y compare cómo se serializan sus metadatos de key u ordering-key con el comportamiento del productor de Java descrito en los pasos de reproducción. Reproduzca el problema con dos consumidores C++ Key_Shared y ambos tipos de productor utilizando Pulsar 2.5.0. Se considera terminado cuando el productor de C++ produce la misma distribución basada en claves entre los consumidores que el productor de Java.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
cpp, java
Área
distributed-systems
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.