2010-02-26 5 views
34

entiendo que 2 opciones están disponibles:¿Cuál es el "modo de entrega" en AMQP?

  • "no persistentes"
  • "persistente"

Pero, ¿qué significa esto realmente?

"No persistente" como en: el tejido AMQP intentará entregar el mensaje si no hay consumidores, ¿se eliminará el mensaje?

"Persistente" como en: AMQP volverá a intentar el mensaje hasta que el consumidor lo acepte ??

Respuesta

26

@jldupont - what @nos dicho. Los mensajes marcados como 'persistentes' que se envían a colas 'durables' se registrarán en el disco. Las colas duraderas se recuperan en caso de un bloqueo, junto con los mensajes persistentes que almacenaron antes del bloqueo. Para obtener más detalles, sugiero preguntar en la lista de correo o echar un vistazo a las diversas piezas de información de antecedentes en el sitio web de rabbitmq. haga póngase en contacto si tiene alguna pregunta.

Saludos

Alexis

+0

Gracias Alexis !! – jldupont

+0

No entiendo por qué puede declarar un Exchange duradero. ¡Y del otro lado "podrías" !? declarar una cola que "corresponde" a ese intercambio no duradero? O, por ejemplo, si declara un intercambio NONDURABLE pero una cola duradera, y se producirá un bloqueo. ¿Podría recuperar esa cola duradera en el intercambio no duradero? @alexis – Detached

+2

"durabilidad" solo significa que Exchange o Queue sobrevivirán a un reinicio del servidor ... Esto no significa que los mensajes almacenados en una cola duradera sobrevivirán ... Eso también requeriría una propiedad de nivel de mensaje '.deliveryMode = 2' . (Acabo de probar estos casos) – Myobis

12

delivery_mode en AMQP determina si el mensaje se almacena en el disco después de que se reinicie el agente. Puede marcar los mensajes como persistentes - por doten delivery_mode property = 2 cuando se publica el mensaje por ejemplo en PHP (PECL extensión AMQP):

$exchange->publish($text, $routingKey, null, array('delivery_mode' => 2)); 

También habría que declarar la cola tan duradera (o será descartado después de las paradas del corredor)

$queue->setFlags(AMQP_DURABLE); 
Cuestiones relacionadas