Spring BootにおけるRabbitMQ設定の詳細解説

接続設定

spring:
  rabbitmq:
    host: rabbitmq-server
    port: 5672
    username: admin
    password: securepass
    connection-timeout: 15000
    virtual-host: /
    requested-heartbeat: 60
    publisher-confirms: true
    publisher-returns: true

リスナー設定

spring:
  rabbitmq:
    listener:
      simple:
        prefetch: 1
        concurrency: 1
        max-concurrency: 10
        acknowledge-mode: manual
        retry:
          enabled: true
          max-attempts: 5
          max-interval: 10s
          initial-interval: 2s
          multiplier: 2
          stateless: true

テンプレート設定

spring:
  rabbitmq:
    template:
      mandatory: true
      receive-timeout: 3000
      reply-timeout: 5000
      retry:
        enabled: true
        max-attempts: 3
        initial-interval: 1s
        multiplier: 1.5
        max-interval: 5s

依存関係の追加

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

メッセージ送信

rabbitTemplate.convertAndSend("exchange_name", "routing_key", messageData);

メッセージ処理

@RabbitListener(queues = "queue_name")
public void processMessage(String messageContent, 
                         Channel channel, 
                         @Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag) {
    try {
        // メッセージ処理ロジック
        channel.basicAck(deliveryTag, false);
    } catch (Exception e) {
        channel.basicNack(deliveryTag, false, true);
    }
}

Bean設定によるキュー定義

@Configuration
public class RabbitMQConfig {
    
    @Bean
    public DirectExchange customExchange() {
        return new DirectExchange("custom_exchange", true, false);
    }
    
    @Bean
    public Queue customQueue() {
        return new Queue("custom_queue", true, false, false);
    }
    
    @Bean
    public Binding customBinding() {
        return BindingBuilder.bind(customQueue())
                           .to(customExchange())
                           .with("custom_key");
    }
}

タグ: RabbitMQ Spring Boot AMQP Message Queue Java Configuration

5月18日 14:54 投稿