service

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.

ServiceConsumidor

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

EventoAcción sobre Elasticsearch
search.product.createdUpsert del documento en el índice products
search.product.updatedUpsert del documento (idéntico a created)
search.product.deleteddelete_document por id
reservations.availability.updatedModifica 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.

Los dos topics se pisan

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ámetroValor
service_namesearch
AdapterGoogle Cloud Pub/Sub
Schema registryEventCatalog (EVENT_CATALOG_URL)
Ownersearch <ecommerce@bigbox.com.ar>
Versión de bigbox-event-bus1.1.6

Subscriptions: event_bus_search_{topic} para cada uno de los cuatro topics.

Info

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).

Arquitectura

subscribed by
publishes
event
routes to
publishes
event
routes to
publishes
event
routes to
publishes
event
routes to
Event
Product Created(v1)
ecommerzeta
Viewing
Service
Search(v1.0.0)
ecommerzeta
Channel
Google Cloud Pub/Subv1.0.0
At least oncepubsub
ecommerzeta
Service
Bigbox Backend(v1.0.0)
omega-backend+2
Event
Product Updated(v1)
ecommerzeta
Event
Product Deleted(v1)
ecommerzeta
Event
Availability Updated(v1)
alpha-centauri
  • events (4)
  • services (2)
  • channels (1)