Skip to main content
El worker de Fetcher emite un evento terminal por cada job de extracción: un job.completed o un job.failed, exactamente uno por desenlace de job. Estas notificaciones son un contrato obligatorio del producto — el worker se niega a arrancar con el streaming deshabilitado en lugar de tragárselas silenciosamente. Los eventos viajan en el sobre CloudEvents compartido, publicados sobre RabbitMQ: cada evento se enruta al exchange nombrado por RABBITMQ_JOB_EVENTS_EXCHANGE con la clave del evento como routing key AMQP (job.completed, job.failed). Ambos eventos están respaldados por outbox: la fila del outbox se escribe de forma durable y un relay la publica, reintentando durante las caídas del broker; un reparador reemite los eventos terminales que nunca llegaron al broker. La entrega es at-least-once — deduplica por ce-id, que es determinista por desenlace de job: fetcher.job.<status>.<jobID>, así que cada reemisión del mismo hecho lleva el mismo id. El ce-subject es el id del job; los despliegues single-tenant estampan ce-tenantid como single-tenant. A diferencia de la mayoría de los payloads de Lerian, los eventos de job de Fetcher usan claves en camelCase — reflejan la superficie REST de Fetcher.

Eventos de job

El bloque result describe el artefacto producido: dónde se escribió, su tamaño y conteo de filas, el formato de salida y — cuando la protección de resultados está habilitada — los descriptores de integridad (HMAC) y protección que un consumidor usa para verificar el artefacto antes de confiar en él.

Eventos consumidos

Fetcher no consume eventos de la plataforma. Sus solicitudes de job llegan por una cola de trabajo RabbitMQ interna desde los productos que lo embeben (como Matcher), que no forma parte del contrato público de eventos.