SpringBoot は RabbitMQ を統合します
RabbitMQ のバージョン 3.6.0 から、Lazy Queues、つまり遅延キューの概念が追加されました。
遅延キューの特徴は次のとおりです。
- メッセージを受信すると、メッセージはメモリではなくディスクに直接保存されます。
- コンシューマは、メッセージを消費するときにディスクから読み取り、メモリにロードします。
- 数百万のメッセージストレージをサポート。
1.遅延キューの定義方法
キューを遅延キューとして設定するには、キューを宣言するときに x-queue-mode 属性を遅延として指定するだけです。
遅延キューはコマンド ライン、@Bean、アノテーションを通じて定義できますが、ここでは @Bean と @RabbitListener についてのみ説明します。
1. @Bean で遅延キューを定義する方法 (この方法を推奨)
@Bean
public Queue lazyQueue(){
return QueueBuilder.durable("lazy.queue")
.lazy() //设置为惰性队列
.build();
}
@Bean
public Queue lazyQueue(){
Map<String, Object> args = new HashMap();
//队列设置给惰性队列
args.put("x-queue-mode", "lazy");
return new Queue("lazy.queue",true,false,false,args);
}
2. @RabbitListener による遅延キューの定義方法
@RabbitListener アノテーションでキューを宣言するときに、x-queue-mode パラメータを追加します
@RabbitListener(queuesToDeclare = @Queue(
value = "lazy.queue",
durable = "true",
arguments = @Argument(name = "x-queue-mode", value = "lazy")
))
public void handleLazyQueueMsg(String msg) {
}