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?

È stato utile?

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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top