Přechod na quorum queues v RabbitMQ
Jako vývojář/devops chci přejít na quorum queues, aby se správně zajistilo high availability (HA).
Výstup z Analýza přechodu na Quorum queues v RabbitMQ (#57 - closed)
Akceptační kritéria
- Všechny klasické
dataplatform
avehicle-positions
queues jsou převedeny na typquorum
- S vyjímkou
dataplatform.rush-hour-aggregation.aggregateData
, v případě které se nastavuje priorita zprávy z cronu https://gitlab.com/operator-ict/golemio/devops/infrastructure/-/blob/master/cluster_development/golemio_golemio-values.yaml#L415
- S vyjímkou
- Typ fronty je nastavitelný v kódu (default quorum)
- Ve worker tascích: vznikne nová optional property
queueType
- V legacy queueDefinitions: nastavení přes
queues[].options.arguments
na{ "x-queue-type": "classic|quorum" }
- Ve worker tascích: vznikne nová optional property
Implementační poznámky
- Akceptuje @sinacek a
@seniorvyvojar
- Quorum queues nepodporují nastavení priority zprávy https://www.rabbitmq.com/quorum-queues.html#feature-matrix
- Vytvoří se headerem
x-queue-type
:quorum
, ve třídě QueueProcessor
await this.channel.assertQueue(name, {
...queueOptions,
arguments: { "x-queue-type": "quorum" },
})
- Nechceme zapomenout na dead queue https://www.rabbitmq.com/quorum-queues.html#dead-lettering, která se vytváří zvlášt přímo v connectoru, v metodě
assertDeadQueue
https://gitlab.com/operator-ict/golemio/code/modules/core/-/blob/development/src/integration-engine/connectors/AMQPConnector.ts#L138
Error: Channel closed by server: 406 (PRECONDITION-FAILED) with message "PRECONDITION_FAILED - inequivalent arg 'x-queue-type' for queue 'dan25-local.ropidgtfs.checkForNewData' in vhost '/': received the value 'quorum' of type 'longstr' but current is none"
Edited by Josef Šplíchal