mcpField
S
spring-amqp

spring-amqp

github.com/claude-dev-suite開発4643 回インストール2 日前に更新
リポジトリ

spring-amqp について

Spring アプリケーションで Spring AMQP と RabbitMQ を使うためのクイックリファレンスです。ブローカー設定、メッセージの送受信、信頼性を高める方法、問題解決を開発者向けに解説します。

主な機能

  1. 01Spring AMQP の依存関係と設定
  2. 02エクスチェンジ、キュー、バインディング設定
  3. 03メッセージ送信側と受信側の例
  4. 04確認応答とデッドレターの指針
  5. 05リトライと問題解決の案内

活用シーン

  1. 01Spring アプリケーションへの RabbitMQ 導入
  2. 02注文イベントの送信側と受信側の設定
  3. 03メッセージ配信やシリアライズ失敗の調査

MCP 対応

包括的な RabbitMQ ドキュメントの取得に `mcp__documentation__fetch_docs` を参照します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/claude-dev-suite/claude-dev-suite --skill spring-amqp

インストール後、Claude Code で/spring-amqpを入力して読み込まれたか確認します。

同梱ファイルadvanced.md

詳細

Spring AMQP (RabbitMQ) - クイックリファレンス

完全なリファレンス:交換タイプ(topic、fanout)、コンシューマーパターン(複数メソッド、要求と応答)、エラー処理、DLQ 処理、テストについては、advanced.md を参照してください。

詳細な知識:包括的なドキュメントは、テクノロジーに rabbitmq を指定して mcp__documentation__fetch_docs を使用してください。

依存関係

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

設定

spring:
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest
    listener:
      simple:
        acknowledge-mode: manual
        concurrency: 3
        max-concurrency: 10
        prefetch: 10

交換機、キュー、バインディングの設定

@Configuration
public class RabbitMQConfig {

    public static final String EXCHANGE = "orders.exchange";
    public static final String QUEUE = "orders.queue";
    public static final String ROUTING_KEY = "orders.created";

    @Bean
    public DirectExchange ordersExchange() {
        return new DirectExchange(EXCHANGE);
    }

    @Bean
    public Queue ordersQueue() {
        return QueueBuilder.durable(QUEUE)
            .withArgument("x-dead-letter-exchange", "orders.dlx")
            .withArgument("x-dead-letter-routing-key", "dead")
            .build();
    }

    @Bean
    public Binding ordersBinding() {
        return BindingBuilder.bind(ordersQueue()).to(ordersExchange()).with(ROUTING_KEY);
    }

    @Bean
    public Jackson2JsonMessageConverter messageConverter() {
        return new Jackson2JsonMessageConverter();
    }
}

プロデューサー

@Service
@RequiredArgsConstructor
public class OrderProducer {

    private final RabbitTemplate rabbitTemplate;

    public void sendOrder(OrderEvent event) {
        rabbitTemplate.convertAndSend(EXCHANGE, ROUTING_KEY, event);
    }

    public void sendWithHeaders(OrderEvent event, String correlationId) {
        rabbitTemplate.convertAndSend(EXCHANGE, ROUTING_KEY, event, message -> {
            message.getMessageProperties().setCorrelationId(correlationId);
            message.getMessageProperties().setDeliveryMode(MessageDeliveryMode.PERSISTENT);
            return message;
        });
    }
}

コンシューマー

@Service
public class OrderConsumer {

    @RabbitListener(queues = "orders.queue")
    public void consume(
            @Payload OrderEvent event,
            @Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag,
            @Header(AmqpHeaders.CORRELATION_ID) String correlationId,
            Channel channel) throws IOException {

        try {
            processOrder(event);
            channel.basicAck(deliveryTag, false);
        } catch (Exception e) {
            channel.basicNack(deliveryTag, false, false); // Send to DLQ
        }
    }
}

ベストプラクティス

推奨事項非推奨事項
手動確認応答を使用する処理せずに自動確認応答する
DLX/DLQ を設定する失敗したメッセージを通知なく失う
メッセージ TTL を設定するメッセージを永久に保持する
永続配信を使用する重要なメッセージに一時配信を使用する
プリフェッチを設定するプリフェッチを無制限にする

このスキルを使用すべきでない場合

  • Raw RabbitMQ - サーバー設定には rabbitmq スキルを使用してください
  • Kafka との統合 - spring-kafka スキルを使用してください
  • 汎用的なメッセージングパターン - messaging-expert を参照してください

アンチパターン

アンチパターン問題解決策
処理せずに自動確認応答するメッセージの損失手動確認応答を使用する
DLQ を設定しない失敗したメッセージの損失デッドレター交換機を設定する
プリフェッチを無制限にするメモリの問題適切なプリフェッチ数を設定する
リスナー内でブロックするスレッドの枯渇非同期処理を使用する
再試行ポリシーを設定しない一時的な障害による損失バックオフ付きの再試行を設定する

トラブルシューティングのクイックガイド

問題診断解決方法
接続が拒否されるRabbitMQ が実行中か確認するホスト/ポートを確認する
メッセージが消費されないキューのバインディングを確認するルーティングキーを確認する
メッセージが DLQ にあるx-death ヘッダーを確認する処理エラーを修正する
コンシューマーが起動しない@RabbitListener を確認するキューが存在することを確認する
シリアライズエラーメッセージタイプを確認するJackson コンバーターを設定する

本番環境のチェックリスト

  • 接続ファクトリーを設定済み
  • 手動確認応答モードを設定済み
  • DLX/DLQ を設定済み
  • 再試行ポリシーを設定済み
  • メッセージコンバーターを設定済み
  • パブリッシャー確認応答を有効化済み
  • プリフェッチ数を最適化済み
  • エラーハンドラーを実装済み
  • メッセージ TTL を設定済み
  • モニタリングを有効化済み

リファレンスドキュメント

コメント