ドキュメントからわかる限り、はい、「推奨」は「推奨」を意味します。
channel.Get()
は ほど多くの機能を提供していないようです。また、 を個別に返すのではなく、 of をchannel.Consume()
返すため、並行コードでより簡単に使用できるようです。chan
Delivery
Delivery
言及されている追加機能はexclusive
、 、 、noLocal
およびnoWait
オプションTable
の args であり、「キューまたはサーバーに固有のセマンティクスを持つ」ものです。
Pop()
あなたができることを使用して関数を実装するには、 amqp サンプルの consumerchannel.Consume()
からいくつかのコードフラグメントにリンクし、 function を使用してチャネルを作成し、実際に機能を実装するを処理する関数を作成し、 aでfunc を起動します。Consume()
chan
Delivery
Pop()
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
}
}