Può txAMQP svincolare in RabbitMQ?
-
20-09-2019 - |
Domanda
Voglio rimuovere legature in RabbitMQ senza eliminare la coda legata. Sto usando txAMQP con la specifica AMQP 0.8; sembra essere l'unica versione che supporti RabbitMQ ma non ha alcun metodo unbind
.
Stranamente, una lettura attraverso il codice sorgente suggerisce che RabbitMQ supporta unbind, il che mi lascia piuttosto confusa.
Posso sciogliere con questa combinazione di client e server? Se sì, come?
Soluzione
Come avete notato, RabbitMQ ha per alcune versioni ora supportato un metodo Queue.Unbind di estensione, con la definizione sollevato dalla specifica 0-9, ma non tutte le librerie client AMQP sono stati estesi nello stesso modo.
Per ottenere questo a lavorare con txAMQP, è necessario prendere le definizioni XML dei metodi Queue.Unbind e Queue.UnbindOk dal 0-9 spec, incollarli nel file 0-8 spec txAMQP utilizza, e riavviare la tua applicazione. Si dovrebbe ora avere un metodo Queue.Unbind a disposizione, se ho capito correttamente come funziona txAMQP.
Ecco le pertinenti strofe XML, dalla licenza BSD-0-9-1 spec:
<method name="unbind" synchronous="1" index="50">
<chassis name="server" implement="MUST"/>
<response name="unbind-ok"/>
<field name="reserved-1" type="short" reserved="1"/>
<field name="queue" domain="queue-name"/>
<field name="exchange" domain="exchange-name"/>
<field name="routing-key" domain="shortstr"/>
<field name="arguments" domain="table"/>
</method>
<method name="unbind-ok" synchronous="1" index="51">
<chassis name="client" implement="MUST"/>
</method>