Todo mensaje en cola ya ha sido pagado
La pasarela responde a un envío antes de enrutarlo. Para cuando un mensaje está en la cola del router o en la cola de un proveedor, ya se le ha dicho al cliente que fue aceptado y su saldo ha sido debitado.Los dos límites
No hay un valor predeterminado deliberadamente. Un límite es una declaración sobre tu propio tráfico y tu propio heap:
demasiado bajo rechaza mensajes que se habrían entregado, demasiado alto nunca se dispara antes que la JVM.Empieza por cuántos mensajes estás dispuesto a retener para un proveedor que se ha quedado en silencio, y lee las
profundidades en
/ops/health bajo carga normal primero. router_queue y el queue_depth de cada worker, con
el límite al lado una vez que se establece uno. Detalles completos en Límites.Solo los dos ingresos rechazan
Dentro de la pasarela una cola llena es contrapresión, no un error. El router esperando a una cola de worker llena es el router yendo a la velocidad que el proveedor puede aceptar, lo cual es el comportamiento correcto. En un ingreso hay un cliente manteniendo una conexión abierta, así que esperar detendría esa sesión en lugar de ralentizarla. Esas dos puertas rechazan en su lugar:
Consulta Códigos de estado SMPP.
Qué puede costar un mensaje en un proveedor
maxRetries acota el total de submit_sm que un mensaje puede costar en un proveedor. A través de los reintentos
dentro del worker y de cada viaje de vuelta por el router.
outSms.routing.maxAttempts (predeterminado 20) es la otra mitad: cuántas veces un mensaje puede dar la vuelta por el
router antes de ser abandonado, reembolsado y cerrado como REJECTED con reason=maxAttempts. Un fallo, y
un filtro pidiendo el mensaje de vuelta, ambos cuentan.
outSms.routing.retryBackoffMillis (predeterminado 100) es un retraso en el mensaje, no en el router.
El hilo lo aparca y sigue directamente con el siguiente.
Dos números que significan que los mensajes están perdidos
routing_retry_queue es el más suave: mensajes esperando un backoff tras un fallo o un requeue de filtro.
Números pequeños son ordinarios. Un número que se mantiene alto es una tabla de enrutamiento que no cubre
el tráfico que llega.
Ambos están en /ops/health, y expuestos como fireflo_routing_failed_queue y
fireflo_routing_retry_queue. fireflo queue dump lista lo que realmente está esperando: cuenta, producto,
destino, número de reintentos y antigüedad. En lugar de solo cuántos hay. Consulta
Colas.
RabbitMQ es opcional, y solo para REST
- memory (predeterminado)
- rabbitmq
Sin dependencia externa. Ambos ingresos alimentan la cola del router en proceso.Un reinicio descarta lo que no había llegado a un proveedor. Nada externo lo está reteniendo.