個人の名刺:
ブロガー:酔っ払い。
個人プロフィール:ワインを満喫し、ワインのエネルギーで未来のために戦いましょう。
この記事は感動的です:三人で旅行するときは、私たちが先生にならなければなりません。
このプロジェクトは、ステーション Bのダークホース プログラマーである SpringCloud+RabbitMQ+Docker+Redis+search+distributed による Java「SpringCloud Microservice Technology Stack」に基づいています。
[SpringCloud+RabbitMQ+Docker+Redis+search+分散・詳細システム解説 springcloud マイクロサービス技術スタックコース | ダークホースプログラマー Java マイクロサービス]クリックして視聴
2. メッセージの信頼性
2. メッセージの永続化
プロデューサーの確認により、メッセージが RabbitMQ キューに確実に配信されますが、メッセージが RabbitMQ に送信された後、マシンが突然ダウンすると、メッセージも失われる可能性があります。
メッセージが RabbitMQ に安全に保存されるようにするには、メッセージ永続化メカニズムを有効にする必要があります。
- スイッチの永続性:デフォルトでは非永続的
- キューの永続性:デフォルトでは非永続的
- メッセージの永続性: デフォルトの永続性
デフォルトでは、SpringAMQP を通じて mq を使用するものはすべて永続的です。
- スイッチの永続性
RabbitMQ のスイッチはデフォルトでは非永続的であり、mq の再起動後に失われます。
SpringAMQP では、コードを通じてスイッチの永続性を指定できます。
@Bean
public DirectExchange simpleExchange(){
// 三个参数:交换机名称、是否持久化、当没有queue与其绑定时是否自动删除
return new DirectExchange("simple.direct", true, false);
}
RabbitMQ コンソールで永続スイッチのラベルを確認できます
D
。
- キューの永続性
RabbitMQ のキューはデフォルトでは非永続的であり、mq が再起動されると失われます。
SpringAMQP では、コードを通じてスイッチの永続性を指定できます。
@Bean
public Queue simpleQueue(){
// 使用QueueBuilder构建队列,durable就是持久化的
return QueueBuilder.durable("simple.queue").build();
}
RabbitMQ コンソールで永続キューのラベルを確認できます
D
。
- メッセージの永続性
SpringAMQP を使用してメッセージを送信する場合、メッセージ プロパティ (MessageProperties) を設定し、配信モードを指定できます。
- 1: 非永続的
- 2:持久化
非永続メッセージは、mq が再起動されると消えます。
永続化メッセージコード
/**
* 持久化消息测试
*/
@Test
public void testDurableMessage() {
//创建持久化消息
Message message = MessageBuilder
.withBody("hello, ttl queue".getBytes(StandardCharsets.UTF_8))
.setDeliveryMode(MessageDeliveryMode.PERSISTENT)
.build();
//消息id
CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());
//发送消息
rabbitTemplate.convertAndSend("simple.queue", message, correlationData);
//记录日志
log.debug("消息发送成功");
}
docker を再起動します。メッセージはまだ存在します。
知らせ:
- キューがスイッチにバインドされていない場合、routingkey はキュー名を使用できます。
上記のコード例では、simple.queue はキューですが、スイッチにバインドされていません。