Colas & streams
Publicar, inspeccionar y vaciar mensajes en un broker desplegado.
eqs mq trabaja contra un broker que desplegaste desde el marketplace. El mismo sobre que eqs db — la api guarda las credenciales, comprueba el permiso y registra lo que se ejecutó — y verbos deliberadamente distintos, porque una cola no tiene filas que consultar.
Lo que guarda el broker. Streams en NATS; rechazado en AMQP, que no sabe listar.
eqs mq queues eventsLee mensajes sin consumirlos — hasta donde el broker lo permita.
eqs mq peek orders dead-letter --limit 5
Retira los mensajes. No vuelven.
eqs mq consume orders dead-letter --limit 10 --json > vaciado.json
Pone un mensaje en una cola o subject.
eqs mq publish events orders.created '{"id":42}'Descarta todo lo que hay. Exige data.ddl.
eqs mq purge orders dead-letterAsomarse no siempre sale gratis
Esta es la parte que conviene leer antes de usarlo en producción.
| Broker | Qué hace un peek |
|---|---|
| NATS | Nada. JetStream lee el mensaje por secuencia y lo deja exactamente donde estaba. Puedes asomarte al mismo stream todo el día |
| AMQP | Lo toca. El protocolo no tiene mirar sin llevarse: cada mensaje se obtiene y se devuelve, y RabbitMQ lo marca como reentregado |
El resultado siempre indica cuál de los dos casos te tocó, para que un script pueda distinguirlo.
Permisos
| Verbo | Exige | Quién lo tiene |
|---|---|---|
queues, peek | data.read | Reader, Contributor, Owner |
consume, publish | data.write | Contributor, Owner |
purge | data.ddl | Owner |
purge no es un cambio de estructura, así que data.ddl puede parecer el sitio
equivocado. Es el correcto: ese permiso existe porque editar una fila y borrar
una tabla no son el mismo riesgo, y vaciar una cola de producción es del segundo
tipo. Un Contributor puede vaciar la cola mensaje a mensaje con consume, que
devuelve lo que se llevó; lo que no puede es descartarlo todo de una vez.
Lo que cada broker no puede hacer
Ambos límites se responden por su nombre, y no con un resultado vacío, porque "no tienes colas" es una respuesta equivocada y no una respuesta nula.
- AMQP no lista colas. No forma parte del protocolo — está en la API HTTP de
gestión de RabbitMQ, en otro puerto y con otra credencial. Nombra la cola:
eqs mq peek <svc> <cola>. - NATS necesita JetStream para todo menos
publish. NATS a secas no guarda nada: un mensaje sin suscriptor desapareció, así que no hay nada que mirar, vaciar ni descartar.
El registro
Toda operación queda registrada: quién la ejecutó, contra qué broker, qué cola y
cuánto tardó. El cuerpo de los mensajes no, por la misma razón que los valores
de --param en eqs db — es el contenido con más probabilidad de llevar datos
personales.