Search
Microservicio de búsqueda sobre Elasticsearch. Consume los cambios de producto y de disponibilidad para mantener el índice al día. Consumidor puro: no publica eventos.
Overview
search es un microservicio FastAPI que sirve la búsqueda de productos del sitio sobre
Elasticsearch. Consume cuatro eventos de dos dominios distintos para mantener el índice
products sincronizado.
No publica ningún evento.
Qué hace con cada evento
| Evento | Acción sobre Elasticsearch |
|---|---|
search.product.created | Upsert del documento en el índice products |
search.product.updated | Upsert del documento (idéntico a created) |
search.product.deleted | delete_document por id |
reservations.availability.updated | Modifica el array availability del documento de la actividad |
El routing entre ActivityDocument y BoxDocument se hace por el campo type del payload.
Un type desconocido lanza excepción y el mensaje se nackea.
search.product.updated reescribe el documento entero, incluido el array availability, y
no hay ordenamiento garantizado entre topics. Un product.updated puede pisar la
disponibilidad que acaba de dejar un reservations.availability.updated.
Manejo de errores
Los handlers corren dentro de una transacción de New Relic (Consumer/{event_name}). Si un
handler lanza, el mensaje se nackea y Pub/Sub reintenta. Los errores de validación de payload
se loguean como Invalid payload y no se reintentan.
Configuración del bus
Definida en src/infra/event_bus.py:
| Parámetro | Valor |
|---|---|
service_name | search |
| Adapter | Google Cloud Pub/Sub |
| Schema registry | EventCatalog (EVENT_CATALOG_URL) |
Owner | search <ecommerce@bigbox.com.ar> |
Versión de bigbox-event-bus | 1.1.6 |
Subscriptions: event_bus_search_{topic} para cada uno de los cuatro topics.
Es el único servicio cuyo Owner.name no es Ecommerce, y el que corre la versión más vieja
de la librería (1.1.6 contra 1.1.10 de los otros dos).