目次
SpringBoot は RabbitMQ を統合します
ホームページ Java &#&チュートリアル SpringBoot が RabbitMQ を統合する方法

SpringBoot が RabbitMQ を統合する方法

May 31, 2023 pm 04:43 PM
springboot rabbitmq

SpringBoot は RabbitMQ を統合します

まず SpringBoot プロジェクトをビルドし、POM XML ファイルに次の依存関係を追加します

<依赖>
    <groupid>org.springframework.boot</groupid>
    <artifactid>spring-boot-starter-amqp</artifactid></依赖><依赖>
    <groupid>org.springframework.boot</groupid>
    <artifactid>spring-boot-starter-web</artifactid></依赖>
ログイン後にコピー

構成ファイルを変更し、次の RabbitMQ 構成を追加します

服务器:
  port: 8888 # 设置端口号Spring:
  rabbitMQ:
    host: 127.0.0.1 # 设置 RabbitMQ 的主机
    port: 5672 # 设置 RabbitMQ 服务端口
    username: guest # 设置 RabbitMQ 用户名
    password: guest # 设置 RabbitMQ 密码
ログイン後にコピー

新しいパブリック定数クラス

public interface RabbitConstant { 
    /** 
     * 简单模式
     */ 
    String SIMPLE_QUEUE_NAME = "simple_queue"; 
    /** 
     * 工作模式
     */ 
    String WORK_QUEUE_NAME = "work_queue"; 
    /** 
     * 发布/订阅模式
     */ 
    String PUBLISH_SUBSCRIBE_EXCHANGE_NAME = "publish_subscribe_exchange"; 
    字符串 PUBLISH_SUBSCRIBE_FIRST_QUEUE_NAME = "publish_subscribe_first_queue"; 
    字符串 PUBLISH_SUBSCRIBE_SECOND_QUEUE_NAME = "publish_subscribe_second_queue"; 
    /** 
     * 路由模式
     */ 
    String ROUTING_EXCHANGE_NAME = "routing_exchange";
    字符串 ROUTING_FIRST_QUEUE_NAME = "routing_first_queue"; 
    字符串 ROUTING_SECOND_QUEUE_NAME = "routing_second_queue"; 
    字符串 ROUTING_THIRD_QUEUE_NAME = "routing_third_queue"; 
    字符串 ROUTING_FIRST_QUEUE_ROUTING_KEY_NAME = "routing_first_queue_routing_key"; 
    字符串 ROUTING_SECOND_QUEUE_ROUTING_KEY_NAME = "routing_second_queue_routing_key"; 
    字符串 ROUTING_THIRD_QUEUE_ROUTING_KEY_NAME = "routing_third_queue_routing_key"; 
    /** 
     * 主题模式
     */ 
    String TOPICS_EXCHANGE_NAME = "topics_exchange"; 
    字符串 TOPICS_FIRST_QUEUE_NAME = "topics_first_queue"; 
    字符串 TOPICS_SECOND_QUEUE_NAME = "
    字符串 TOPICS_THIRD_QUEUE_NAME = "topics_third_queue"; 
    String TOPICS_FIRST_QUEUE_ROUTING_KEY = "topics.first.routing.key"; 
    String TOPICS_SECOND_QUEUE_ROUTING_KEY = "topics.second.routing.key"; 
    String TOPICS_THIRD_QUEUE_ROUTING_KEY = "topics.third.routing.key"; 
    字符串 TOPICS_ROUTING_KEY_FIRST_WILDCARD = "#.first.#"; 
    字符串 TOPICS_ROUTING_KEY_SECOND_WILDCARD = "*.second.#"; 
    字符串 TOPICS_ROUTING_KEY_THRID_WILDCARD = "*.third.*"; 
    /** 
     * 标题模式
     */ 
    String HEADER_EXCHANGE_NAME = "header_exchange"; 
    字符串 HEADER_FIRST_QUEUE_NAME = "header_first_queue"; 
    字符串 HEADER_SECOND_QUEUE_NAME = "header_second_queue"; 
    /**
     * rpc 模式
     */ 
    String RPC_QUEUE_NAME = "rpc_queue"; 
}
ログイン後にコピー

コントローラーリクエストクラスを追加します(結果を検証するために使用され、最後に追加できます)

导入 com.example.rabbitmq.constant.RabbitConstant;
导入 org.springframework.amqp.core.Message;
导入 org.springframework.amqp.core.MessageProperties;
导入 org.springframework.amqp.rabbit.core.RabbitTemplate;
导入 org.springframework.beans.factory.annotation.Autowired;
导入 org.springframework.web.bind.annotation.GetMapping;
导入 org.springframework.web.bind.annotation.RestController;
导入 java.nio.charset.StandardCharsets;@RestController public class RabbitController { 
    @Autowired 
    private RabbitTemplate rabbitTemplate; 
    @GetMapping(value = "/simple") 
    public void simple() {
        rabbitTemplate.convertAndSend(RabbitConstant.SIMPLE_QUEUE_NAME, "你好世界!"); 
    } 
    @GetMapping(value = "/work") 
    public void work() { 
        rabbitTemplate.convertAndSend(RabbitConstant.WORK_QUEUE_NAME, "work hello!"); 
    } 
    @GetMapping(value = "/pubsub") 
    public void pubsub() { 
        rabbitTemplate.convertAndSend(RabbitConstant.PUBLISH_SUBSCRIBE_EXCHANGE_NAME, null, "发布/订阅你好"); 
    } 
    @GetMapping(value = "/routing") 
    public void routing() { 
        // 向第一个队列发送消息
        rabbitTemplate.convertAndSend(RabbitConstant.ROUTING_EXCHANGE_NAME, RabbitConstant.ROUTING_FIRST_QUEUE_ROUTING_KEY_NAME, "路由你好"); 
    } 
    @GetMapping(value = "/topics") 
    public void topics() { 
        // 向第一个队列发送消息。这时候队列可以接收到消息,因为队列的通配符是#first.#,而routing_key是topics first。路由。键,匹配成功
        rabbitTemplate.convertAndSend(RabbitConstant.TOPICS_EXCHANGE_NAME, RabbitConstant.TOPICS_FIRST_QUEUE_ROUTING_KEY, "topics hello");        // 向第二个队列发送消息。这时候队列也能收到消息了,因为队列的通配符是*秒#,而routing_key是topic秒。路由。键,匹配成功
        rabbitTemplate.convertAndSend(RabbitConstant.TOPICS_EXCHANGE_NAME, RabbitConstant.TOPICS_SECOND_QUEUE_ROUTING_KEY, "topics hello"); 
        // 向第三个队列发送消息。此时队列无法接受消息,因为队列通配符是*第三个*,而routing_key是topics第三个。路由。键,匹配失败
        rabbitTemplate.convertAndSend(RabbitConstant.TOPICS_EXCHANGE_NAME, RabbitConstant.TOPICS_THIRD_QUEUE_ROUTING_KEY, "topics hello"); 
    } 
    @GetMapping(value = "/header")    public void header() { 
        // 这个消息应该被两个队列接收。第一个队列全部匹配成功,第二个队列 Hello 值任意匹配成功
        MessageProperties messageProperties = new MessageProperties(); 
        messageProperties.setHeader("matchAll", "YES"); 
        messageProperties.setHeader("你好", "world"); 
        Message message = new Message("header first hello".getBytes(StandardCharsets.UTF_8), messageProperties); 
        rabbitTemplate.convertAndSend(RabbitConstant.HEADER_EXCHANGE_NAME, null, message); 
        // 这个消息应该只被第二个队列接受。第一个队列全部匹配失败,
        MessageProperties messagePropertiesSecond = new MessageProperties(); 
        messagePropertiesSecond.setHeader("matchAll", "NO"); 
        Message messageSecond = new Message("header second hello".getBytes(StandardCharsets.UTF_8), messagePropertiesSecond); 
        rabbitTemplate.convertAndSend(RabbitConstant.HEADER_EXCHANGE_NAME, null, messageSecond); 
    } 
    @GetMapping(value = "/rpc") 
    public void rpc() { 
        Object responseMsg = rabbitTemplate.convertSendAndReceive(RabbitConstant.RPC_QUEUE_NAME, "rpc hello!"); 
        System.out.println("rabbit rpc 响应消息:" + responseMsg); 
    } 
}
ログイン後にコピー

以上がSpringBoot が RabbitMQ を統合する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

React と RabbitMQ を使用して信頼性の高いメッセージング アプリを構築する方法 React と RabbitMQ を使用して信頼性の高いメッセージング アプリを構築する方法 Sep 28, 2023 pm 08:24 PM

React と RabbitMQ を使用して信頼性の高いメッセージング アプリケーションを構築する方法 はじめに: 最新のアプリケーションは、リアルタイム更新やデータ同期などの機能を実現するために、信頼性の高いメッセージングをサポートする必要があります。 React はユーザー インターフェイスを構築するための人気のある JavaScript ライブラリであり、RabbitMQ は信頼性の高いメッセージング ミドルウェアです。この記事では、React と RabbitMQ を組み合わせて信頼性の高いメッセージング アプリケーションを構築する方法を紹介し、具体的なコード例を示します。 RabbitMQ の概要:

RabbitMQ を使用して PHP で分散メッセージ処理を実装する方法 RabbitMQ を使用して PHP で分散メッセージ処理を実装する方法 Jul 18, 2023 am 11:00 AM

RabbitMQ を使用して PHP で分散メッセージ処理を実装する方法 はじめに: 大規模なアプリケーション開発では、分散システムが一般的な要件になっています。分散メッセージ処理は、タスクを複数の処理ノードに分散することでシステムの効率と信頼性を向上させるパターンです。 RabbitMQ は、AMQP プロトコルを使用してメッセージの配信と処理を実装する、オープンソースの信頼性の高いメッセージ キュー システムです。この記事では、配布のために PHP で RabbitMQ を使用する方法について説明します。

SpringBootとSpringMVCの比較と差異分析 SpringBootとSpringMVCの比較と差異分析 Dec 29, 2023 am 11:02 AM

SpringBoot と SpringMVC はどちらも Java 開発で一般的に使用されるフレームワークですが、それらの間には明らかな違いがいくつかあります。この記事では、これら 2 つのフレームワークの機能と使用法を調べ、その違いを比較します。まず、SpringBoot について学びましょう。 SpringBoot は、Spring フレームワークに基づいたアプリケーションの作成と展開を簡素化するために、Pivo​​tal チームによって開発されました。スタンドアロンの実行可能ファイルを構築するための高速かつ軽量な方法を提供します。

Go での RabbitMQ の使用: 完全ガイド Go での RabbitMQ の使用: 完全ガイド Jun 19, 2023 am 08:10 AM

最新のアプリケーションが複雑になるにつれて、メッセージングは​​強力なツールになっています。この分野では、RabbitMQ は、異なるアプリケーション間でメッセージを配信するために使用できるメッセージ ブローカーとして非常に人気があります。この記事では、Go 言語で RabbitMQ を使用する方法を説明します。このガイドでは以下の内容について説明します: RabbitMQ の概要 RabbitMQ のインストール RabbitMQ の基本概念 Go で RabbitMQ を使用する入門 RabbitMQ と Go

Golang と RabbitMQ 間のリアルタイム データ同期のためのソリューション Golang と RabbitMQ 間のリアルタイム データ同期のためのソリューション Sep 27, 2023 pm 10:41 PM

Golang と RabbitMQ 間のリアルタイム データ同期ソリューションの紹介: 今日の時代では、インターネットの普及とデータ量の爆発的な増加に伴い、リアルタイム データ同期の重要性がますます高まっています。非同期データ送信とデータ同期の問題を解決するために、多くの企業はメッセージ キューを使用してデータのリアルタイム同期を実現し始めています。この記事では、Golang と RabbitMQ に基づくリアルタイム データ同期ソリューションを紹介し、具体的なコード例を示します。 1. RabbitMQ とは何ですか?ラビ

SpringBoot+Dubbo+Nacos開発実践チュートリアル SpringBoot+Dubbo+Nacos開発実践チュートリアル Aug 15, 2023 pm 04:49 PM

この記事では、dubbo+nacos+Spring Boot の実際の開発について詳しく説明する例を書きます。この記事では理論的な知識はあまり取り上げませんが、dubbo を nacos と統合して開発環境を迅速に構築する方法を説明する最も簡単な例を書きます。

go-zeroとRabbitMQの応用実践 go-zeroとRabbitMQの応用実践 Jun 23, 2023 pm 12:54 PM

現在、マイクロサービス アーキテクチャ モデルを採用する企業が増えており、このアーキテクチャではメッセージ キューが重要な通信手段となっており、その中でも RabbitMQ が広く使用されています。 Go 言語では、go-zero は近年登場したフレームワークであり、開発者がメッセージ キューをより簡単に使用できるようにするための実用的なツールやメソッドが数多く提供されています。以下では、実際のアプリケーションに基づいて go-zero を紹介します。とRabbitMQの応用実践。 1.RabbitMQ の概要Rabbit

Golang RabbitMQ: 高可用性メッセージ キュー システムのアーキテクチャ設計と実装 Golang RabbitMQ: 高可用性メッセージ キュー システムのアーキテクチャ設計と実装 Sep 28, 2023 am 08:18 AM

GolangRabbitMQ: 高可用性メッセージ キュー システムのアーキテクチャ設計と実装には、特定のコード サンプルが必要です はじめに: インターネット技術の継続的な開発とその広範な応用により、メッセージ キューは現代のソフトウェア システムに不可欠な部分になりました。メッセージ キューは、デカップリング、非同期通信、フォールト トレラント処理、その他の機能を実装するツールとして、分散システムに高可用性とスケーラビリティのサポートを提供します。 Golang は効率的で簡潔なプログラミング言語として、同時実行性とパフォーマンスの高いシステムを構築するために広く使用されています。

See all articles