国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

rabbitmq基礎(chǔ)教程(ui,java,springamqp)

這篇具有很好參考價(jià)值的文章主要介紹了rabbitmq基礎(chǔ)教程(ui,java,springamqp)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

概述:安裝看我上篇文章Docker安裝rabbitmq-CSDN博客

任務(wù)一

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

創(chuàng)建一個(gè)隊(duì)列

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

這樣創(chuàng)建兩個(gè)隊(duì)列

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

在amq.fanout交換機(jī)里面發(fā)送數(shù)據(jù)

模擬發(fā)送數(shù)據(jù)

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

發(fā)送消息,發(fā)現(xiàn)一下信息:

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

所以得出理論,消息發(fā)送是先到交換機(jī),然后由交換機(jī)路由到消息隊(duì)列

交換機(jī)是負(fù)責(zé)路由和轉(zhuǎn)發(fā)消息的,并沒有存儲(chǔ)的功能。

綁定隊(duì)列

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式同理綁定queue2

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

這時(shí),再在交換機(jī)中發(fā)消息

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

查看結(jié)果:

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

數(shù)據(jù)隔離

在rabbitmq中有虛擬主機(jī)的概念。

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

第一步:新添用戶

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

添加成功后,發(fā)現(xiàn)沒有虛擬主機(jī),也就是說,我用這個(gè)用戶登錄后,是不可以操作上面的數(shù)據(jù)的。

又因?yàn)?,我是超級管理員,所以我能看到這些

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

所以只能看,不能操作。

第二步:創(chuàng)立自己的虛擬主機(jī)

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

第三步:選自己的虛擬主機(jī)

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

選好后就只能看自己的了。

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

用Java代碼操作

官網(wǎng):RabbitMQ Tutorials — RabbitMQ

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

可以看到,官網(wǎng)上有案例,我們大多情況下用的是SpringAmqp,所以也就不講那么多java簡單調(diào)用的事情了。

用Spring AMQP操作

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

第一步:在控制臺(tái)里面創(chuàng)建一個(gè)simple.queue隊(duì)列

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

第二步:編寫代碼

pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.cyl</groupId>
    <artifactId>test09</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>test09</name>
    <description>test09</description>
    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.6.13</spring-boot.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>
        <dependency>
            <groupId>com.rabbitmq</groupId>
            <artifactId>amqp-client</artifactId>
            <version>5.13.0</version>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <configuration>
                    <mainClass>org.cyl.test09.Test09Application</mainClass>
                    <skip>true</skip>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

配置mq服務(wù)端消息

spring:
  rabbitmq:
    host: 192.168.56.10
    port: 5672
    virtual-host: /cmall
    username: cmall
    password: 123456

發(fā)送方:

package org.cyl.test09.demos;

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class SendMessageService {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    public void testSimpleQueue(){
        String queueName="simple.queue";
        String message="hello,spring amqp!";
        rabbitTemplate.convertAndSend(queueName,message);
    }

    public void sendMessage(String exchange, String routingKey, Object message) {
        rabbitTemplate.convertAndSend(exchange, routingKey, message);
    }
}

接收方:

package org.cyl.test09.demos;

import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Service;

@Service
public class ReceiveMessageService {

    @RabbitListener(queues = "simple.queue")
    public void receiveMessage(String message) {
        System.out.println("接收到的消息: " + message);
    }
}

controller類:

package org.cyl.test09.demos.controller;

import org.cyl.test09.demos.ReceiveMessageService;
import org.cyl.test09.demos.SendMessageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @Autowired
    SendMessageService sendMsgservice;

    @Autowired
    ReceiveMessageService receiveMsgService;

    @GetMapping("/send")
    public String send(){
        sendMsgservice.testSimpleQueue();
        return "ok";
    }

}

展示結(jié)果:

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

Work模型

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

第一步:創(chuàng)建一個(gè)隊(duì)列

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

第二步:編寫代碼

發(fā)送:

package org.cyl.test09.demos;

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class SendMessageService {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    public void testSimpleQueue() throws InterruptedException {
        String queueName="work.queue";

        for (int i=1;i<50;i++){
            String message="hello,spring amqp!_"+i;
            rabbitTemplate.convertAndSend(queueName,message);
            Thread.sleep(20);
        }

    }

    public void sendMessage(String exchange, String routingKey, Object message) {
        rabbitTemplate.convertAndSend(exchange, routingKey, message);
    }
}

接收:

package org.cyl.test09.demos;

import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Service;

@Service
public class ReceiveMessageService {

    @RabbitListener(queues = "work.queue")
    public void receiveMessage1(String message) {
        System.out.println("消費(fèi)者1接收到的消息: " + message);
    }
    @RabbitListener(queues = "work.queue")
    public void receiveMessage2(String message) {
        System.out.println("消費(fèi)者2接收到的消息: " + message);
    }
}

結(jié)果展示:

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

消費(fèi)者一和消費(fèi)者二是輪詢效果。

Fanout交換機(jī)

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

第一步:創(chuàng)建隊(duì)列

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

第二步:創(chuàng)建交換機(jī)并綁定

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

第三步:編寫代碼

發(fā)送端:

    public void testFanout() {
        String exchangeName="cmall.fanout";
        String message="hello,spring everyone";
        rabbitTemplate.convertAndSend(exchangeName,null,message);
    }

接收端:

   @RabbitListener(queues = "fanout.queue1")
    public void receiveMessage3(String message) {
        System.out.println("消費(fèi)者1接收到的消息: " + message);
    }
    @RabbitListener(queues = "fanout.queue2")
    public void receiveMessage4(String message) {
        System.out.println("消費(fèi)者2接收到的消息: " + message);
    }

展示結(jié)果:

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

私發(fā)給不同的人:Direct交換機(jī)

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

第一步:創(chuàng)建兩個(gè)隊(duì)列

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

第二步:聲明交換機(jī)并綁定

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

第三步:編寫代碼

接收方:

   @RabbitListener(queues = "direct.queue1")
    public void receiveMessage5(String message) {
        System.out.println("消費(fèi)者1接收到的消息: " + message);
    }
    @RabbitListener(queues = "direct.queue2")
    public void receiveMessage6(String message) {
        System.out.println("消費(fèi)者2接收到的消息: " + message);
    }

發(fā)送方:

    public void testDirect1() {
        String exchangeName="cmall.fanout";
        String message="hello,spring everyone";
        rabbitTemplate.convertAndSend(exchangeName,"red",message);
    }

    public void testDirect2() {
        String exchangeName="cmall.fanout";
        String message="hello,spring blue";
        rabbitTemplate.convertAndSend(exchangeName,"blue",message);
    }
    
    public void testDirect3() {
        String exchangeName="cmall.fanout";
        String message="hello,spring yellow";
        rabbitTemplate.convertAndSend(exchangeName,"yellow",message);
    }

Topic交換機(jī)

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

這個(gè)示例代碼就懶得寫了。

聲明交換機(jī)和隊(duì)列1

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

綁定隊(duì)列到哪個(gè)交換機(jī)里面。

一般建立關(guān)系都是在消費(fèi)者這邊的。

聲明交換機(jī)和隊(duì)列2

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

基于注解式聲明隊(duì)列和交換機(jī)。

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

消息轉(zhuǎn)換器

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

字節(jié)碼可變,會(huì)有安全問題。

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

rabbitmq基礎(chǔ)教程(ui,java,springamqp),rabbitmq,分布式

搞完以上東西,代碼不用變,在發(fā)一次,即可為json。

好了,基礎(chǔ)講完。文章來源地址http://www.zghlxwxcb.cn/news/detail-801081.html

到了這里,關(guān)于rabbitmq基礎(chǔ)教程(ui,java,springamqp)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • HBase完全分布式配置(下)hbase篇 保姆級教程(近乎零基礎(chǔ)跟著配也能配對)

    HBase完全分布式配置(下)hbase篇 保姆級教程(近乎零基礎(chǔ)跟著配也能配對)

    配置前也是要確保前面都配置正確,把多余的jdk都刪掉(不會(huì)刪看筆者第一篇文章) 上傳不再贅述 解壓: 改名: 環(huán)境變量: 應(yīng)用: 要修改jdk和設(shè)置zookeeper外部使用 由于hbase對hdfs有依賴關(guān)系,則需要將hadoop下的core-site.xml和hdfs-site.xml復(fù)制到hbase中的conf目錄下 zookeeper-hadoop-

    2024年04月17日
    瀏覽(18)
  • Rabbitmq----分布式場景下的應(yīng)用

    Rabbitmq----分布式場景下的應(yīng)用

    如果單機(jī)模式忘記也可以看看這個(gè)快速回顧rabbitmq,在做學(xué)習(xí) 消息隊(duì)列在使用過程中,面臨著很多實(shí)際問題需要思考: 消息從發(fā)送,到消費(fèi)者接收,會(huì)經(jīng)理多個(gè)過程: 其中的每一步都可能導(dǎo)致消息丟失,常見的丟失原因包括: 發(fā)送時(shí)丟失: 生產(chǎn)者發(fā)送的消息未送達(dá)exchange 消

    2024年02月08日
    瀏覽(26)
  • 微服務(wù)技術(shù)棧SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式(五):分布式搜索 ES-下

    微服務(wù)技術(shù)棧SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式(五):分布式搜索 ES-下

    聚合(aggregations)可以實(shí)現(xiàn)對文檔數(shù)據(jù)的統(tǒng)計(jì)、分析、運(yùn)算。聚合常見的有三類: 桶(Bucket)聚合:用來對文檔做分組 TermAggregation:按照文檔字段值分組 Date Histogram:按照日期階梯分組,例如一周為一組,或者一月為一組 度量(Metric)聚合:用以計(jì)算一些值,比如:最大值

    2024年03月26日
    瀏覽(37)
  • 微服務(wù)學(xué)習(xí):SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

    微服務(wù)學(xué)習(xí):SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

    目錄 一、高級篇 二、面試篇 ==============實(shí)用篇============== day05-Elasticsearch01 1.初識(shí)elasticsearch 1.4.安裝es、kibana 1.4.1.部署單點(diǎn)es 1.4.2.部署kibana 1.4.3.安裝IK分詞器 1.4.4.總結(jié) 2.索引庫操作 2.1.mapping映射屬性 2.2.索引庫的CRUD 2.2.1.創(chuàng)建索引庫和映射 2.2.2.查詢索引庫 2.2.3.修改索引庫 2.

    2024年02月02日
    瀏覽(24)
  • 分布式消息隊(duì)列:Kafka vs RabbitMQ vs ActiveMQ

    在現(xiàn)代分布式系統(tǒng)中,消息隊(duì)列是一種常見的異步通信模式,它可以幫助系統(tǒng)處理高并發(fā)、高可用性以及容錯(cuò)等問題。在這篇文章中,我們將深入探討三種流行的分布式消息隊(duì)列:Apache Kafka、RabbitMQ和ActiveMQ。我們將討論它們的核心概念、算法原理、特點(diǎn)以及使用場景。 隨著

    2024年02月02日
    瀏覽(19)
  • Python爬蟲分布式架構(gòu) - Redis/RabbitMQ工作流程介紹

    Python爬蟲分布式架構(gòu) - Redis/RabbitMQ工作流程介紹

    在大規(guī)模數(shù)據(jù)采集和處理任務(wù)中,使用分布式架構(gòu)可以提高效率和可擴(kuò)展性。本文將介紹Python爬蟲分布式架構(gòu)中常用的消息隊(duì)列工具Redis和RabbitMQ的工作流程,幫助你理解分布式爬蟲的原理和應(yīng)用。 為什么需要分布式架構(gòu)? 在數(shù)據(jù)采集任務(wù)中,單機(jī)爬蟲可能面臨性能瓶頸和資

    2024年02月11日
    瀏覽(29)
  • (黑馬出品_07)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

    (黑馬出品_07)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

    [此文檔是在心向陽光的天域的博客加了一些有助于自己的知識(shí)體系,也歡迎大家關(guān)注這個(gè)大佬的博客](https://blog.csdn.net/sinat_38316216/category_12263516.html) [是這個(gè)視頻](https://www.bilibili.com/video/BV1LQ4y127n4/?p=5spm_id_from=pageDrivervd_source=9beb0a2f0cec6f01c2433a881b54152c) 聚合 可以讓我們極其方便

    2024年03月12日
    瀏覽(15)
  • 分布式搜索引擎(Elastic Search)+消息隊(duì)列(RabbitMQ)部署(商城4)

    分布式搜索引擎(Elastic Search)+消息隊(duì)列(RabbitMQ)部署(商城4)

    1、全文搜索 Elastic search可以用于實(shí)現(xiàn)全文搜索功能,例如商城中對商品搜索、搜索、分類搜索、訂單搜索、客戶搜索等。它支持復(fù)雜的查詢語句、中文分詞、近似搜索等功能,可以快速地搜索并返回匹配的結(jié)果。 2、日志分析 Elastic search可以用于實(shí)現(xiàn)實(shí)時(shí)日志分析,例

    2024年02月04日
    瀏覽(20)
  • RabbitMQ——解決分布式事務(wù)問題,RabbitMQ的重要作用之一?。?!通過可靠生產(chǎn)和可靠消費(fèi)來完美解決!

    RabbitMQ——解決分布式事務(wù)問題,RabbitMQ的重要作用之一!?。⊥ㄟ^可靠生產(chǎn)和可靠消費(fèi)來完美解決!

    分布式事務(wù)是指涉及多個(gè)獨(dú)立的計(jì)算機(jī)系統(tǒng)(也稱為節(jié)點(diǎn)或參與者)之間的事務(wù)處理。在分布式系統(tǒng)中,每個(gè)節(jié)點(diǎn)可能各自擁有自己的數(shù)據(jù)存儲(chǔ)和事務(wù)管理機(jī)制。分布式事務(wù)的目標(biāo)是保證在跨多個(gè)節(jié)點(diǎn)執(zhí)行的一系列操作可以以一致和可靠的方式執(zhí)行和提交,即使在面對故障或

    2024年04月23日
    瀏覽(20)
  • 【大數(shù)據(jù)】Hadoop-3.3.4完全分布式安裝(包含VMware16和Ubuntu22的下載安裝及配置)、搭建、配置教程,以及Hadoop基礎(chǔ)簡介

    【大數(shù)據(jù)】Hadoop-3.3.4完全分布式安裝(包含VMware16和Ubuntu22的下載安裝及配置)、搭建、配置教程,以及Hadoop基礎(chǔ)簡介

    注:本篇文章主要涉及到: HDFS (分布式文件系統(tǒng))、 YARN (資源管理和調(diào)度框架)、以及 MapReduce (離線計(jì)算)。 以下就是本篇文章所采用的的架構(gòu) 。 (1)HDFS架構(gòu)簡述 HDFS架構(gòu)圖 注:上述的master、slave1、slave2均是主機(jī)名(結(jié)點(diǎn)名),可以和本篇文章不一致,但下面所有涉

    2023年04月17日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包