Springboot統合rabbitmqメッセージキューのTTL
7354 ワード
一:キューの統一期限切れ
1.ttl生産側で符号化
//
public static final String TTL_QUEUE = "delay_queue";
public static final String TTL_NAME = "delay_exchange";
//ttl ( )
private static final int TTL_EXPIRATION = 10000;
/*
*
*/
@Bean
public Queue TTlQueue(){
return QueueBuilder.durable(TTL_QUEUE).withArgument("x-message-ttl", TTL_EXPIRATION).build();
}
@Bean
public TopicExchange TTlExchange(){
return new TopicExchange(TTL_NAME);
}
//
@Bean
public Binding TTlBinding(){
return BindingBuilder.bind(TTlQueue()).to(TTlExchange()).with("*.ttt");
}
2.テスト
/*
TTL
*/
@Test
void TTL() {
rabbitTemplate.convertAndSend(RabbitMQConfig.TTL_NAME,"xiaomi.ttt","hello jsp!");
}
二:メッセージの単独期限切れ
@Test
void TTL() {
// ,
MessagePostProcessor messagePostProcessor= new MessagePostProcessor(){
@Override
public Message postProcessMessage(Message message) throws AmqpException {
// message
message.getMessageProperties().setExpiration("5000");//
return message;
}
};
rabbitTemplate.convertAndSend(RabbitMQConfig.TTL_NAME,"xiaomi.ttt","hello jsp!",messagePostProcessor);
}
注意:時間を変更したい場合は、元のキューを削除してから実行します!!!