2010-02-26 3 views
34

Je comprends que 2 options sont disponibles:Quel est le "mode de livraison" dans AMQP?

  • "Non persistant"
  • "persistante"

Mais qu'est-ce que cela signifie réellement?

"Non-persistant" comme dans: le fabric AMQP va essayer de livrer le message s'il n'y a pas de consommateurs, le message sera abandonné? "Persistant" comme dans: AMQP réessayera le message jusqu'à ce qu'un consommateur l'accepte ??

Répondre

26

@jldupont - ce que @nos dit. Les messages marqués comme "persistants" qui sont remis aux files d'attente "durables" seront enregistrés sur le disque. Les files d'attente durables sont récupérées en cas de panne, ainsi que les messages persistants qu'elles ont stockés avant le crash. Pour plus de détails à ce sujet, je suggère de demander sur la liste de diffusion, ou en jetant un coup d'œil aux diverses informations sur le site Web de rabbitmq. S'il vous plaît faire entrer en contact si vous avez des questions.

Vive

alexis

+0

Merci Alexis !! – jldupont

+0

Je ne comprends pas pourquoi vous pouvez déclarer un échange durable. Et de l'autre côté vous "pourriez" !? déclarer une file d'attente qui "correspond" à cet échange non durable? Ou par exemple si vous souhaitez déclarer un Exchange NONDURABLE mais une file d'attente durable, et qu'il y aurait un crash. Pourrais-je récupérer cette file d'attente durable dans l'échange non durable? @alexis – Detached

+2

"durabilité" signifie que l'échange ou la file d'attente survivra à un redémarrage du serveur .. Cela ne signifie pas que les messages stockés dans une file d'attente durable survivront ... Cela nécessiterait également une propriété de niveau message .deliveryMode = 2' . (Je viens de tester ces cas) – Myobis

12

delivery_mode dans AMQP détermine si le message sera stocké sur le disque après le redémarrage du courtier. Vous pouvez marquer les messages comme persistants - par Seting delivery_mode property = 2 lorsque vous publiez un message par exemple en PHP (PECL extension AMQP):

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

Vous devez également déclarer la file d'attente aussi durable (ou il sera abandonné après l'arrêt de courtier)

$queue->setFlags(AMQP_DURABLE); 
Questions connexes