Ich veröffentliche viele Nachrichten in meiner Warteschlange in RabbitMQ, wenn Arbeiter ausgeschaltet ist. Dann starte ich meinen Worker und er nimmt alle Nachrichten aus der Warteschlange und er funktioniert gut, aber wenn ich meinen Worker-Prozess stoppe, bevor er endet, werden alle Nachrichten aus der Warteschlange gelöscht. Wenn ich zweitens den gleichen Arbeiter starte, hat er keine Nachrichten zu nehmen.RabbitMQ nehmen eine Nachricht aus der Warteschlange beim Start
$channel->queue_declare($action, false, false, false, false);
$channel->basic_qos(null, 1, null);
$channel->basic_consume($action, '', false, true, false, false, $callback);
Wie kann ich auf meine Arbeiter tun nur eine Nachricht beim Start aus der Warteschlange nimmt und wenn Arbeiter stoppt und startet nimmt er aus der Warteschlange Nachrichten weitermachen, wo er aufhört?
Es sieht gut aus, aber ich weiß nicht, wie jetzt ich Informationen zurücksenden kann, dass die Nachricht vollständig verbraucht ist. –
@BartekPieczonka Verwenden Sie die Methode 'bacic_ack' (entsprechend dem Befehl' basic.ack'). Die PHP-Bibliothek Dokumentation ist .. Mist, aber es ist das gleiche Prinzip unter den verschiedenen Kunden. Siehe https://www.rabbitmq.com/tutorials/tutorial-two-php.html und notieren Sie "$ msg-> delivery_info ['channel'] -> basic_ack ($ msg-> delivery_info ['delivery_tag']);' – user2864740
Yeah jetzt funktioniert gut, vielen Dank! Du bist toll. –