tutorial exchange espaƱol rabbitmq amqp

exchange - Uso de RabbitMQ de bits inmediatos y obligatorios.



rabbitmq tutorial (2)

http://www.rabbitmq.com/blog/2012/11/19/breaking-things-with-rabbitmq-3-0/

Eliminación de la bandera "inmediata"

¿Qué cambió? Eliminamos el soporte para el indicador "inmediato" que se usa con poca frecuencia en la publicación básica de AMQP.

¿Por qué demonios hiciste eso? El soporte para "inmediato" hizo que muchas partes de la base de código fueran más complejas, particularmente alrededor de las colas duplicadas. También impidió que pudiéramos ofrecer mejoras sustanciales de rendimiento en las colas duplicadas.

¿Que necesito hacer? Si solo desea poder publicar mensajes que se eliminarán si no se consumen de inmediato, puede publicar en una cola con un TTL de 0.

Si también necesita que su editor pueda determinar que esto ha sucedido, también puede usar la función DLX para enrutar dichos mensajes a otra cola, desde la cual el editor puede consumirlos.

Acabo de copiar el anuncio aquí para una referencia rápida.

He usado el servidor RabbitMQ y para publicar mensajes cuando el campo inmediato se estableció como verdadero , intenté enviar 50,000 mensajes y usando la lista de colas de conejo mqctl , vi que la cantidad de mensajes en la cola era cero . Luego cambié el indicador inmediato a falso y otra vez intenté enviar 50,000 mensajes y luego usando rabbitmqctl list_queues vi que había un total de 100,000 mensajes en cola (hasta ahora no había ningún consumidor presente)

Y después de eso comencé a ser consumidor y consumí los 100,000 mensajes. ¿Puede alguien ayudarme a comprender el campo de bits inmediato y también este comportamiento? Además, no pude entender el concepto de campo de bits obligatorio .

Agradeciendo de antemano.

Gurpreet Singh.


Los campos immediate y mandatory forman parte de la especificación AMQP, y también están cubiertos en las Preguntas frecuentes de RabbitMQ para aclarar cómo sus implementadores interpretaron su significado:

Mandatory

Este indicador le dice al servidor cómo reaccionar si un mensaje no se puede enrutar a una cola. Específicamente, si se establece obligatorio y después de ejecutar los enlaces, el mensaje se colocó en cero colas, entonces el mensaje se devuelve al remitente (con un retorno básico). Si no se hubiera establecido obligatoriamente en las mismas circunstancias, el servidor omitiría silenciosamente el mensaje.

O en mis palabras, "Ponga este mensaje en al menos una cola. Si no puede, envíamelo de nuevo".

Immediate

Para un mensaje publicado con un conjunto inmediato, si una cola coincidente tiene clientes listos, a uno de ellos se le enrutará el mensaje. Si el consumidor afortunado se bloquea antes de recibir un recibo, el mensaje se volverá a poner en cola y / o se enviará a otros consumidores en esa cola (si no hay un fallo, se acepta el mensaje y todo se hace según lo normal). Sin embargo, si una cola coincidente no tiene consumidores listos, el mensaje no se pondrá en cola para su posterior reenvío desde esa cola. Solo si todas las colas coincidentes no tienen consumidores listos, el mensaje se devolverá al remitente (a través de basic.return).

O en mis palabras, "Si hay al menos un consumidor conectado a mi cola que puede recibir un mensaje en este momento, envíele este mensaje de inmediato. Si no hay consumidores conectados, entonces no tiene sentido que consuman mi mensaje. más tarde y nunca lo verán. Se duermen, pierden ".