fix: update RabbitMQ queue configurations to use durable and quorum settings

This commit is contained in:
Rodrigo Verdiani 2026-04-27 20:36:15 -03:00
parent b6db38686a
commit 8ea64fef82

View File

@ -1,11 +1,13 @@
package com.magamochi.common.config;
import com.magamochi.common.model.enumeration.ContentType;
import org.springframework.amqp.core.AmqpAdmin;
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.core.QueueBuilder;
import org.springframework.amqp.core.TopicExchange;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitAdmin;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.support.converter.JacksonJsonMessageConverter;
import org.springframework.beans.factory.annotation.Value;
@ -57,7 +59,8 @@ public class RabbitConfig {
@Bean
public Queue imageFetchQueue() {
return QueueBuilder.nonDurable(imageFetchQueue)
return QueueBuilder.durable(imageFetchQueue)
.quorum()
.deadLetterExchange("")
.deadLetterRoutingKey(imageFetchQueue + ".dlq")
.build();
@ -65,12 +68,13 @@ public class RabbitConfig {
@Bean
public Queue imageFetchDlq() {
return QueueBuilder.nonDurable(imageFetchQueue + ".dlq").build();
return QueueBuilder.durable(imageFetchQueue + ".dlq").quorum().build();
}
@Bean
public Queue mangaUpdateQueue() {
return QueueBuilder.nonDurable(mangaUpdateQueue)
return QueueBuilder.durable(mangaUpdateQueue)
.quorum()
.deadLetterExchange("")
.deadLetterRoutingKey(mangaUpdateQueue + ".dlq")
.build();
@ -78,12 +82,13 @@ public class RabbitConfig {
@Bean
public Queue mangaUpdateDlq() {
return QueueBuilder.nonDurable(mangaUpdateQueue + ".dlq").build();
return QueueBuilder.durable(mangaUpdateQueue + ".dlq").quorum().build();
}
@Bean
public Queue mangaContentImageUpdateQueue() {
return QueueBuilder.nonDurable(mangaContentImageUpdateQueue)
return QueueBuilder.durable(mangaContentImageUpdateQueue)
.quorum()
.deadLetterExchange("")
.deadLetterRoutingKey(mangaContentImageUpdateQueue + ".dlq")
.build();
@ -91,12 +96,13 @@ public class RabbitConfig {
@Bean
public Queue mangaContentImageUpdateDlq() {
return QueueBuilder.nonDurable(mangaContentImageUpdateQueue + ".dlq").build();
return QueueBuilder.durable(mangaContentImageUpdateQueue + ".dlq").quorum().build();
}
@Bean
public Queue mangaCoverUpdateQueue() {
return QueueBuilder.nonDurable(mangaCoverUpdateQueue)
return QueueBuilder.durable(mangaCoverUpdateQueue)
.quorum()
.deadLetterExchange("")
.deadLetterRoutingKey(mangaCoverUpdateQueue + ".dlq")
.build();
@ -104,12 +110,13 @@ public class RabbitConfig {
@Bean
public Queue mangaCoverUpdateDlq() {
return QueueBuilder.nonDurable(mangaCoverUpdateQueue + ".dlq").build();
return QueueBuilder.durable(mangaCoverUpdateQueue + ".dlq").quorum().build();
}
@Bean
public Queue fileImportQueue() {
return QueueBuilder.nonDurable(fileImportQueue)
return QueueBuilder.durable(fileImportQueue)
.quorum()
.deadLetterExchange("")
.deadLetterRoutingKey(fileImportQueue + ".dlq")
.build();
@ -117,7 +124,7 @@ public class RabbitConfig {
@Bean
public Queue fileImportDlq() {
return QueueBuilder.nonDurable(fileImportQueue + ".dlq").build();
return QueueBuilder.durable(fileImportQueue + ".dlq").quorum().build();
}
@Bean
@ -145,7 +152,8 @@ public class RabbitConfig {
@Bean
public Queue mangaContentIngestQueue() {
return QueueBuilder.nonDurable(mangaContentIngestQueue)
return QueueBuilder.durable(mangaContentIngestQueue)
.quorum()
.deadLetterExchange("")
.deadLetterRoutingKey(mangaContentIngestQueue + ".dlq")
.build();
@ -153,12 +161,13 @@ public class RabbitConfig {
@Bean
public Queue mangaContentIngestDlq() {
return QueueBuilder.nonDurable(mangaContentIngestQueue + ".dlq").build();
return QueueBuilder.durable(mangaContentIngestQueue + ".dlq").quorum().build();
}
@Bean
public Queue mangaContentImageIngestQueue() {
return QueueBuilder.nonDurable(mangaContentImageIngestQueue)
return QueueBuilder.durable(mangaContentImageIngestQueue)
.quorum()
.deadLetterExchange("")
.deadLetterRoutingKey(mangaContentImageIngestQueue + ".dlq")
.build();
@ -166,12 +175,13 @@ public class RabbitConfig {
@Bean
public Queue mangaContentImageIngestDlq() {
return QueueBuilder.nonDurable(mangaContentImageIngestQueue + ".dlq").build();
return QueueBuilder.durable(mangaContentImageIngestQueue + ".dlq").quorum().build();
}
@Bean
public Queue mangaIngestQueue() {
return QueueBuilder.nonDurable(mangaIngestQueue)
return QueueBuilder.durable(mangaIngestQueue)
.quorum()
.deadLetterExchange("")
.deadLetterRoutingKey(mangaIngestQueue + ".dlq")
.build();
@ -179,12 +189,13 @@ public class RabbitConfig {
@Bean
public Queue mangaIngestDlq() {
return QueueBuilder.nonDurable(mangaIngestQueue + ".dlq").build();
return QueueBuilder.durable(mangaIngestQueue + ".dlq").quorum().build();
}
@Bean
public Queue providerPageIngestQueue() {
return QueueBuilder.nonDurable(providerPageIngestQueue)
return QueueBuilder.durable(providerPageIngestQueue)
.quorum()
.deadLetterExchange("")
.deadLetterRoutingKey(providerPageIngestQueue + ".dlq")
.build();
@ -192,12 +203,13 @@ public class RabbitConfig {
@Bean
public Queue providerPageIngestDlq() {
return QueueBuilder.nonDurable(providerPageIngestQueue + ".dlq").build();
return QueueBuilder.durable(providerPageIngestQueue + ".dlq").quorum().build();
}
@Bean
public Queue mangaContentDownloadQueue() {
return QueueBuilder.nonDurable(mangaContentDownloadQueue)
return QueueBuilder.durable(mangaContentDownloadQueue)
.quorum()
.deadLetterExchange("")
.deadLetterRoutingKey(mangaContentDownloadQueue + ".dlq")
.build();
@ -205,7 +217,7 @@ public class RabbitConfig {
@Bean
public Queue mangaContentDownloadDlq() {
return QueueBuilder.nonDurable(mangaContentDownloadQueue + ".dlq").build();
return QueueBuilder.durable(mangaContentDownloadQueue + ".dlq").quorum().build();
}
// TODO: remove unused queues
@ -215,7 +227,8 @@ public class RabbitConfig {
@Bean
public Queue mangaFollowUpdateChapterQueue() {
return QueueBuilder.nonDurable(mangaFollowUpdateChapterQueue)
return QueueBuilder.durable(mangaFollowUpdateChapterQueue)
.quorum()
.deadLetterExchange("")
.deadLetterRoutingKey(mangaFollowUpdateChapterQueue + ".dlq")
.build();
@ -223,7 +236,12 @@ public class RabbitConfig {
@Bean
public Queue mangaFollowUpdateChapterDlq() {
return QueueBuilder.nonDurable(mangaFollowUpdateChapterQueue + ".dlq").build();
return QueueBuilder.durable(mangaFollowUpdateChapterQueue + ".dlq").quorum().build();
}
@Bean
public AmqpAdmin amqpAdmin(ConnectionFactory connectionFactory) {
return new RabbitAdmin(connectionFactory);
}
@Bean