- キューの最大本数:
Thousands (or even tens of thousands) of queues should be no problem at al
Name
Durable (the queue will survive a broker restart)
Exclusive (used by only one connection and the queue will be deleted when that connection closes)
Auto-delete (queue that has had at least one consumer is deleted when last consumer unsubscribes)
Arguments (optional; used by plugins and broker-specific features such as message TTL, queue length limit, etc)
nackはrejectの上位互換。RabbitMQではackとnackだけ使えばいい。
- ack : AMQPのack。multipleサポート
- nack : AMQPのreject。multipleサポート
- reject : AMQPのreject。
- キュー及びメッセージはデフォルトで永続化されない (都度IOが発生してパフォーマンスが一気に落ちるため)
- 永続化にはかなり設定が必要
- exchange が durable で定義されている
- queue が durable で定義されている
- publish 時のメッセージのプロパティーがpersistent(delivery_mode=2)になっている
- RabbitMQはホスト名を永続化に利用する (EDPの制約) docker-library/rabbitmq#106 (comment)
キューの定義時に x-max-priority
オプションを設定すると、優先度付けされたメッセージを格納できる。 (3.5.0↑)
- https://www.rabbitmq.com/priority.html
- x-max-priority : 最大優先度値。1-255 までの正数。個数に比例してCPUを使う。1-10が推奨されている。
- priority : publish時に basic.properties で指定。0-255。値が高いほど優先。
- priorityが未指定の場合、0として処理される
- 遅延実行するplugin
- 🟩
x-delay
でmsecを指定するだけで使える - 🟥 AWS(AmazonMQ)ではpluginは未サポート (多分)
- 🟥 データ量が増えると遅延が激しい(数分~数日(100万件)) rabbitmq/rabbitmq-delayed-message-exchange#72
- 🟥 ロストする危険性がある
- https://siguniang.wordpress.com/2012/10/06/dead-letter-pattern-with-rabbitmq/
- Dead Letter Channel パターン (TTLヘッダとDLQを使って擬似的に遅延処理を実現)
- 🟩 AWSでも確実に動く
- 🟥 メッセージ個別に時刻を指定できない (キューに対してTTLを設定)