2017-04-10 4 views
0

Ich versuche, meine Aufgabenwarteschlange zu wechseln, um Prioritätsunterstützung zu verwenden, konnte ich den x-max-priority Wert beim Erstellen der Aufgabe festlegen, aber wenn ich versuche, eine Aufgabe zu holen, ist es einen Fehler werfen.RabbitMQ Consumer Wurf Fehler bei der Verwendung der Priorität

Gibt es eine spezielle Möglichkeit, die Aufgabe mit einem Verbraucher abzurufen?

$channel->queue_declare('task_queue', false, true, false, false); 

PhpAmqpLib \ Exception \ AMQPProtocolChannelException 'mit der Meldung ' PRECONDITION_FAILED - inäquivalenten ARG x-max-Priorität "für Warteschlange 'task_queue' in vHost 'vHost': erhalten keine aber Strom ist der Wert '100' vom Typ 'signedint'‘in /var/www/html/vendor/php-amqplib/php-amqplib/PhpAmqpLib/Channel/AMQPChannel.php:188

Antwort

0

Sie müssen $channel->queue_declare mit identischen Parametern auf beiden Seiten.

So müssen Sie die Priorität Immobilie auf beiden Seiten gesetzt wie

$channel->queue_declare('task_queue', false, true, false, false, false, $parameters); 

wo $parameters ein Array wie

deklariert ist
$parameters = [ 
    'x-max-priority' => ['I', 100], 
]; 
+0

Dank konnte ich es mit diesem erklären: $ Parameter [ 'x-max-priority'] = Array ('I', 100); $ channel-> queue_declare ('task_queue', falsch, wahr, falsch, falsch, falsch, $ Parameter); – Kevin

+0

Ich habe versucht, 500k Aufgaben mit der Priorität einfügen (zufällig zwischen 1-100), und ich bemerkte nach 200-300k Aufgaben, wurde es sehr langsam (240/s), muss RabbitMQ diese sortieren/indexieren? – Kevin

+1

@Kevin Ich weiß, dass der Rabbitmq Overhead der priorisierten Warteschlangen hat, aber keine meiner Workloads hat einen Anwendungsfall mit einer so großen Spikes von unverbrauchten Nachrichten auf einmal. Also ich weiß es nicht – zerkms

Verwandte Themen