Module: BugBunny::OTel
- Defined in:
- lib/bug_bunny/otel.rb
Overview
Helpers para emitir campos siguiendo las OTel semantic conventions for messaging. opentelemetry.io/docs/specs/otel/trace/semantic-conventions/messaging/
Se usa tanto en el lado publisher (inyección en headers AMQP) como en el consumer (enriquecimiento de log events estructurados). Centraliza las claves para evitar strings mágicos dispersos y facilitar los tests.
Constant Summary collapse
- SYSTEM =
Clave: sistema de mensajería. Siempre ‘“rabbitmq”` en BugBunny. Flat-naming siguiendo el patrón de ExisRay (underscore sin dots).
:messaging_system- OPERATION =
Clave: tipo de operación (‘publish`, `receive`, `process`).
:messaging_operation- DESTINATION =
Clave: nombre del exchange destino.
:messaging_destination_name- ROUTING_KEY =
Clave: routing key del mensaje (específica de RabbitMQ).
:messaging_routing_key- MESSAGE_ID =
Clave: identificador único del mensaje. En BugBunny se mapea a ‘correlation_id`.
:messaging_message_id- SYSTEM_VALUE =
Valor constante para SYSTEM.
'rabbitmq'
Class Method Summary collapse
-
.messaging_headers(operation:, destination:, routing_key:, message_id: nil) ⇒ Hash{String=>String}
Construye el hash de campos OTel para messaging.
Class Method Details
.messaging_headers(operation:, destination:, routing_key:, message_id: nil) ⇒ Hash{String=>String}
Construye el hash de campos OTel para messaging.
Los campos son aptos tanto para inyectar en headers AMQP como para mergear en kwargs de log events estructurados.
36 37 38 39 40 41 42 43 44 45 |
# File 'lib/bug_bunny/otel.rb', line 36 def self.messaging_headers(operation:, destination:, routing_key:, message_id: nil) fields = { SYSTEM => SYSTEM_VALUE, OPERATION => operation, DESTINATION => destination.to_s, ROUTING_KEY => routing_key.to_s } fields[MESSAGE_ID] = .to_s if fields end |