Quello che si desidera è basic.consume
, che consente al broker di inviare messaggi ai client.
Detto questo, le librerie sono implementate in modo diverso. Molti di loro hanno il supporto per basic.consume
, ma a causa delle limitazioni intrinseche dei framework utilizzati, alcuni non lo fanno (in particolare il client ufficiale RabbitMQ C su cui sono basati molti altri client).
Se la libreria PHP non supporta basic.consume
, è necessario utilizzare il polling (non valido) oppure è possibile utilizzare uno dei client più completi per gestire lo script. Ad esempio, potresti scrivere un programma Python o Java che utilizza il broker (quindi, il broker invia loro le consegne) e potrebbero chiamare lo script ogni volta che viene ricevuto un nuovo messaggio. official tutorials sono un'ottima introduzione alle API AMQP e sono un buon punto di partenza.
Questo è efficiente dalla maggior parte dei punti di vista, ma richiede una connessione stabile con il broker.
In caso di dubbi sulle funzionalità dei vari client o se è necessaria maggiore assistenza, la mailing list RabbitMQ Discuss è un ottimo posto per porre domande. Gli sviluppatori si impegnano a rispondere a qualsiasi query pubblicata lì.
Le librerie sono implementate in modo diverso. Molti di loro hanno il supporto per basic.consume.Se la tua libreria php no, dovrai scrivere la tua. Ad esempio, puoi guidare il tuo script php con uno script python o un programma java che consuma messaggi dal broker. – scvalex
I client Python/Java non avrebbero dovuto eseguire il polling, ma avrebbero avuto bisogno di una connessione stabile con il broker. Il broker spingerebbe i messaggi ai client P/J. I client potrebbero quindi chiamare i tuoi script per ciascun messaggio. Vedere i tutorial di RabbitMQ per i dettagli: http://www.rabbitmq.com/getstarted.html – scvalex
Non ho alcuna esperienza con PHP e non so nulla dei client PHP AMQP. Qualunque cosa ho detto sulla libreria PHP è solo un'ipotesi plausibile. Non ho davvero risposto alla tua domanda qui. A proposito, in futuro, potresti voler porre domande come questa alla mailing list RabbitMQ Discuss. Penso di essere l'unico sviluppatore di RabbitMQ che controlla SO; ma ci impegniamo a rispondere a qualsiasi domanda pubblicata sulla mailing list. – scvalex