En instrumentation-spring-rabbit, ¿por qué valiente elimina los encabezados del mensaje?

En el instrumentation-spring-rabbitmódulo, valiente es extraer y eliminar encabezados, ¿por qué?

He explorado otros instrumentos ( spring-web, httpclient, okhttp3, grpc, y otros) Brave Nunca retire las cabeceras - el cual posee las llaves / extras de rastreo - del mensaje original.

La eliminación de los encabezados tiene un efecto secundario en el que el interceptor de reintento , ya agregado por spring-rabbit, intenta por segunda vez procesar el mensaje, pero porquebrave ha eliminado los encabezados en el primer reintento para que no lo encuentre en el posterior nuevos juicios.

Respuesta 1

El rastreo de mensajes es diferente del rastreo RPC típico en dos formas principales. Debido a que es diferente, compararlo con RPC no es la mejor manera de descubrir un camino por delante. Mencionaré brevemente las dos cosas aquí que se encuentran principalmente en la plataforma de diapositivas que hice sobre el tema.

  1. En la mensajería, a menudo no se pasa ningún contexto de subproceso entre el consumidor y el procesador de mensajes. Esto es diferente a RPC donde generalmente hay una transferencia al menos en el lado de la solicitud.
  2. Cuando tenemos un contexto de subproceso, debemos usarlo para establecer información principal (este es el caso en el procesamiento de conejo). Sin embargo, a menudo ese no es el caso. Por lo tanto, a menudo volvemos a serializar encabezados en el mensaje cuando no conocemos la abstracción del procesamiento de mensajes.

En el caso de su ejemplo, está hablando de spring-rabbit que durante el bloque de procesamiento usa el contexto de subproceso para establecer el "intervalo actual" de manera adecuada. Como no queremos confundir el contexto basado en hilos con el contenido del mensaje, borramos los encabezados.

El caso de "reintento" de hecho pone esto en tela de juicio. ¿Cuál debería ser el padre en ese caso y cómo se conocería? Uno de los problemas con la instrumentación en cuestión es que en realidad no vemos el código que consumió el mensaje.

Concretamente, la instrumentación de la encuesta de rabbitmq no está allí, por lo que ponemos un "período de consumo falso" para dar cuenta de forma retroactiva de eso. Si el mensaje se volvió a reproducir ... quizás sea válido un segundo período de consumo. Francamente, no consideramos esto.

De todos modos, mi punto es que no deberíamos centrarnos demasiado en la diferencia entre el seguimiento de mensajes y RPC ya que habrá alguna diferencia intencional allí. Centrémonos en la brecha en sí y probablemente lo hagamos en gitter, lo que conduciría a un problema de github, creo.

De todos modos, espero que el contexto responda a su pregunta, incluso si no cambia el hecho de que el código actualmente hace lo que hace.

Respuesta: 2

¿Alguien puede tener alguna idea de cómo decodificar el% E3% 82% A2% E3% 82% AF% E3% 82% A8% E3% 83% AA% E3% 82% A2% E3% 83% B3% E3% 82 % A8% E3% 82% A4% E3% 82% Valor B8 en dbsight en archivo .ftl. Está en Java.

Estoy reformulando mi pregunta porque la cosa de 'entidad analizada' no tiene nada que ver con el problema en cuestión. XML 1.1 versus 1.0 es una biblioteca xml 1.1 para escapar de caracteres ilegales antes de serializar / ...

Estaba revisando el ejemplo de Patrón de visitante de Wikipedia y hay un pequeño fragmento de código como ejemplo. Lo puedes encontrar aquí. Si se desplaza por la sección de ejemplo de Java, el constructor ...

Tengo un problema con el cuadro combinado. mi entrada no aparece en la lista desplegable por alguna razón. Intenté con 2 métodos y ninguno de ellos está funcionando. Cuadro combinado que aparece en el marco, pero está vacío. Yo no'...