ドキュメントからわかる限り、はい、「推奨」は「推奨」を意味します。
channel.Get()は ほど多くの機能を提供していないようです。また、 を個別に返すのではなく、 of をchannel.Consume()返すため、並行コードでより簡単に使用できるようです。chanDeliveryDelivery
言及されている追加機能はexclusive、 、 、noLocalおよびnoWaitオプションTableの args であり、「キューまたはサーバーに固有のセマンティクスを持つ」ものです。
Pop()あなたができることを使用して関数を実装するには、 amqp サンプルの consumerchannel.Consume()からいくつかのコードフラグメントにリンクし、 function を使用してチャネルを作成し、実際に機能を実装するを処理する関数を作成し、 aでfunc を起動します。Consume()chanDeliveryPop()handle()goroutine
これの鍵は、何も受信していない場合、チャネル (リンクされた例) が送信をブロックすることです。この例では、handle()func を使用rangeして、チャネル全体が空になるまで処理します。から最後の値を受け取って返すPop()だけの関数の方が、機能が優れている場合がchanあります。実行されるたびに、最新のDelivery.
編集:チャンネルから最新の値を受け取り、それを処理する関数の例(これはユースケースでは機能しない可能性があります。関数が別の関数に別の関数を送信して処理する場合は、より便利です。また、私は持ってDeliveryいchanます以下のコードはテストしていません。エラーだらけかもしれません)
func handle(deliveries <-chan amqp.Delivery, done chan error) {
select {
case d = <-deliveries:
// Do stuff with the delivery
// Send any errors down the done chan. for example:
// done <- err
default:
done <- nil
}
}