📘 RabbitMQ 설정 방법 및 주요 요소 사용법

exchange, routingKey 지정)
RabbitTemplate로 메시지를 Exchange에 발행.public void sendToHub(MessageObject object) {
rabbitTemplate.convertAndSend(
"MESSAGE_EVENTS", // Exchange
"MESSAGE_ASSEMBLE", // Routing Key
object // Object → JSON
);
}

@RabbitListener로 큐를 구독.@RabbitListener(queues = "NOTIFICATION_QUEUE")
public void consume(NotificationObject object) {
//메세지 처리 (
}
기본 설정 예시
@Bean
public Queue notificationQueue() {
return QueueBuilder.durable(NOTIFICATION_QUEUE)
.withArgument("x-dead-letter-exchange", DLX_NOTIFICATION)
.withArgument("x-dead-letter-routing-key", NOTIFICATION_SENT_DLX_KEY)
.withArgument("x-message-ttl", NOTIFICATION_TTL_MS)
.build();
}
.news 같이 패턴 매칭.기본 설정 예시
@Bean
public TopicExchange hubExchange() {
return ExchangeBuilder.topicExchange(MESSAGE_HUB_EVENTS)
.durable(true)
.build();
}

기본 설정 예시
@Bean
public Binding notificationBinding(
) {
return BindingBuilder.bind(notificationQueue())
.to(new TopicExchange(MESSAGE_HUB_EVENTS))
.with(MESSAGE_HUB_ASSEMBLE_KEY);
}
@Bean
public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(
ConnectionFactory connectionFactory,
MessageConverter messageConverter
) {
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
factory.setMessageConverter(messageConverter);
factory.setConcurrentConsumers(2); // 동시에 실행할 소비자 수
factory.setMaxConcurrentConsumers(8); // 최대 소비자 수
factory.setPrefetchCount(20); // 미리 가져올 메시지 수
factory.setDefaultRequeueRejected(false); // 실패 시 재큐 방지 → DLQ로 이동
factory.setMissingQueuesFatal(false); // 큐 없을 때 기동 실패 방지
return factory;
}