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

【RabbitMQ】Spring整合RabbitMQ、Spring實(shí)現(xiàn)RabbitMQ五大工作模式(萬(wàn)字長(zhǎng)文)

這篇具有很好參考價(jià)值的文章主要介紹了【RabbitMQ】Spring整合RabbitMQ、Spring實(shí)現(xiàn)RabbitMQ五大工作模式(萬(wàn)字長(zhǎng)文)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

一、準(zhǔn)備

1、創(chuàng)建maven項(xiàng)目?編輯

2、引入依賴

3、創(chuàng)建配置文件

1.RabbitMQ配置文件

2.生產(chǎn)者項(xiàng)目配置文件

3.消費(fèi)者項(xiàng)目配置文件

二、生產(chǎn)者xml中文件創(chuàng)建隊(duì)列

三、生產(chǎn)者xml文件中創(chuàng)建交換機(jī)以及綁定隊(duì)列

1、創(chuàng)建交換機(jī)

2、綁定隊(duì)列?

四、消費(fèi)者xml文件中創(chuàng)建隊(duì)列消息監(jiān)聽(tīng)器

五、Spring實(shí)現(xiàn)RabbitMQ五大工作模式

1、簡(jiǎn)單模式

1.生產(chǎn)者

2.消費(fèi)者

2、work queues工作隊(duì)列模式

1.生產(chǎn)者

2.消費(fèi)者

3、pub/sub訂閱模式

1.生產(chǎn)者

2.消費(fèi)者

4、routing路由模式

1.生產(chǎn)者

2.消費(fèi)者

5、topics通配符模式

1.生產(chǎn)者

2.消費(fèi)者


一、準(zhǔn)備

1、創(chuàng)建maven項(xiàng)目

spring rabbitmq,RabbitMQ,Java,java-rabbitmq,rabbitmq,spring

spring rabbitmq,RabbitMQ,Java,java-rabbitmq,rabbitmq,spring

2、引入依賴

分別在兩個(gè)項(xiàng)目的pom.xml文件里引入依賴

spring rabbitmq,RabbitMQ,Java,java-rabbitmq,rabbitmq,spring

spring rabbitmq,RabbitMQ,Java,java-rabbitmq,rabbitmq,spring

<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.2.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.amqp</groupId>
            <artifactId>spring-rabbit</artifactId>
            <version>2.1.8.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.1.7.RELEASE</version>
        </dependency>
    </dependencies>

3、創(chuàng)建配置文件

1.RabbitMQ配置文件

在兩個(gè)項(xiàng)目的resources文件夾下創(chuàng)建RabbitMQ的配置文件后綴為yml或properties

spring rabbitmq,RabbitMQ,Java,java-rabbitmq,rabbitmq,spring

創(chuàng)建好文件后將下面配置添加入文件?

rabbitmq.host=127.0.0.1   #IP
rabbitmq.port=5672        #端口
rabbitmq.username=guest   #用戶名
rabbitmq.password=guest   #密碼
rabbitmq.virtual-host= /  #虛擬機(jī)名稱

2.生產(chǎn)者項(xiàng)目配置文件

在生產(chǎn)者項(xiàng)目的resources目錄下創(chuàng)建xml文件,該文件用于注入bean對(duì)象以及后續(xù)創(chuàng)建隊(duì)列、交換機(jī)等

spring rabbitmq,RabbitMQ,Java,java-rabbitmq,rabbitmq,spring

在該文件添加下面代碼

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:rabbit="http://www.springframework.org/schema/rabbit"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       https://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/rabbit
       http://www.springframework.org/schema/rabbit/spring-rabbit.xsd">
    <!--設(shè)置讀取連接RabbitMQ服務(wù)器的配置信息-->
    <context:property-placeholder location="classpath:properties/rabbitmq.properties"/>

    <!-- 創(chuàng)建rabbitmq connectionFactory -->
    <rabbit:connection-factory id="connectionFactory" host="${rabbitmq.host}"
                               port="${rabbitmq.port}"
                               username="${rabbitmq.username}"
                               password="${rabbitmq.password}"
                               virtual-host="${rabbitmq.virtual-host}"/>
    <rabbit:admin connection-factory="connectionFactory"/>
    

    <!--注入rabbitTemplate后續(xù)獲取該對(duì)象發(fā)送消息-->
    <rabbit:template id="rabbitTemplate" connection-factory="connectionFactory"/>
</beans>

3.消費(fèi)者項(xiàng)目配置文件

與生產(chǎn)者項(xiàng)目類(lèi)似創(chuàng)建xml文件,在文件添加以下代碼

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:rabbit="http://www.springframework.org/schema/rabbit"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       https://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/rabbit
       http://www.springframework.org/schema/rabbit/spring-rabbit.xsd">
    <!--加載配置文件-->
    <context:property-placeholder location="classpath:properties/rabbitmq.properties"/>

    <!-- 定義rabbitmq connectionFactory -->
    <rabbit:connection-factory id="connectionFactory" host="${rabbitmq.host}"
                               port="${rabbitmq.port}"
                               username="${rabbitmq.username}"
                               password="${rabbitmq.password}"
                               virtual-host="${rabbitmq.virtual-host}"/>
    
    <rabbit:listener-container connection-factory="connectionFactory" auto-declare="true">
        
    </rabbit:listener-container>
</beans>

二、生產(chǎn)者xml中文件創(chuàng)建隊(duì)列

在生產(chǎn)者項(xiàng)目里我們創(chuàng)建了xml的配置文件,在該文件里我們可以通過(guò)標(biāo)簽去創(chuàng)建隊(duì)列spring rabbitmq,RabbitMQ,Java,java-rabbitmq,rabbitmq,spring

<rabbit:queue id="" name="" auto-declare="true" auto-delete="false" durable="true"></rabbit:queue>

id? ? ? ? ? ? ? ? ? ? ? 表示bean的名稱

name? ? ? ? ? ? ? ? 表示隊(duì)列的名稱

auto-declare? ? ?表示如果當(dāng)服務(wù)器沒(méi)有該隊(duì)列時(shí)是否創(chuàng)建

durable? ? ? ? ? ? ?表示是否持久化到內(nèi)存

三、生產(chǎn)者xml文件中創(chuàng)建交換機(jī)以及綁定隊(duì)列

1、創(chuàng)建交換機(jī)

同樣在生產(chǎn)者項(xiàng)目里我們之前創(chuàng)建的xml文件里同樣我們也可以一個(gè)標(biāo)簽去創(chuàng)建交換機(jī)以及綁定隊(duì)列spring rabbitmq,RabbitMQ,Java,java-rabbitmq,rabbitmq,spring

<rabbit:fanout-exchange id="" name="" auto-declare="true" auto-delete="false" durable="true">
    
</rabbit:fanout-exchange>

id? ? ? ? ? ? ? ? ? ? ? 表示bean的名稱

name? ? ? ? ? ? ? ? 表示交換機(jī)的名稱

auto-declare? ? ?表示如果當(dāng)服務(wù)器沒(méi)有該交換機(jī)時(shí)是否創(chuàng)建

durable? ? ? ? ? ? ?表示是否持久化到內(nèi)存

2、綁定隊(duì)列?

我們?cè)趧?chuàng)建的交換機(jī)標(biāo)簽里可以嵌套標(biāo)簽進(jìn)行綁定spring rabbitmq,RabbitMQ,Java,java-rabbitmq,rabbitmq,spring

<rabbit:fanout-exchange id="" name="" auto-declare="true" auto-delete="false" durable="true">
    <rabbit:bindings>
        <rabbit:binding queue="test"></rabbit:binding>
    </rabbit:bindings>
</rabbit:fanout-exchange>

queue? ? 表示綁定的隊(duì)列名成

此處由于創(chuàng)建的交換機(jī)類(lèi)型是fanout廣播類(lèi)型不需要去配置路由,如果創(chuàng)建的direct交換機(jī)不止需要配置隊(duì)列名屬性,還需要配置路由屬性,如果是topic交換機(jī)則需要配置通配符?

spring rabbitmq,RabbitMQ,Java,java-rabbitmq,rabbitmq,spring

 <rabbit:queue id="test" name="test" auto-declare="true" auto-delete="false" durable="true"></rabbit:queue>


    <rabbit:fanout-exchange id="" name="" auto-declare="true" auto-delete="false" durable="true">
        <rabbit:bindings>
            <rabbit:binding queue="test"></rabbit:binding>
        </rabbit:bindings>
    </rabbit:fanout-exchange>

    <rabbit:direct-exchange id="" name="" durable="true" auto-delete="false" auto-declare="true">
        <rabbit:bindings>
            <rabbit:binding queue="test" key="路由"></rabbit:binding>
        </rabbit:bindings>
    </rabbit:direct-exchange>

    <rabbit:topic-exchange id="" name="" auto-declare="true" auto-delete="false" durable="true">
        <rabbit:bindings>
            <rabbit:binding queue="test" pattern="*.error"></rabbit:binding>
        </rabbit:bindings>
    </rabbit:topic-exchange>

四、消費(fèi)者xml文件中創(chuàng)建隊(duì)列消息監(jiān)聽(tīng)器

同樣在消費(fèi)者創(chuàng)建的xml文件里我們路創(chuàng)建隊(duì)列監(jiān)聽(tīng)器容器來(lái)將不同隊(duì)列的消息映射到不同的類(lèi)

首先我們需要?jiǎng)?chuàng)建一個(gè)類(lèi)實(shí)現(xiàn)MessageListener接口實(shí)現(xiàn)onMessage方法

spring rabbitmq,RabbitMQ,Java,java-rabbitmq,rabbitmq,spring

?然后將他注入spring容器spring rabbitmq,RabbitMQ,Java,java-rabbitmq,rabbitmq,spring

?在xml里此時(shí)我們可以通過(guò)標(biāo)簽創(chuàng)建監(jiān)聽(tīng)器

<rabbit:listener-container connection-factory="connectionFactory" auto-declare="true">
    <rabbit:listener ref="testQueueListener" queue-names="test"></rabbit:listener>
????<rabbit:listener ref="" queue-names=""></rabbit:listener>
????………………
</rabbit:listener-container>

ref? ? ? ? ? ? ? ? ? ? ?表示之前我們定義實(shí)現(xiàn)了MessageListener接口的監(jiān)聽(tīng)類(lèi)在spring容器里的id

queues-names? 表示該類(lèi)要監(jiān)聽(tīng)的隊(duì)列

spring rabbitmq,RabbitMQ,Java,java-rabbitmq,rabbitmq,spring

后續(xù)需要再進(jìn)行添加,在該標(biāo)簽下可繼續(xù)進(jìn)行添加?

在之前創(chuàng)建的類(lèi)重寫(xiě)的方法里參數(shù)message.getBody()即可獲得隊(duì)列里消息

五、Spring實(shí)現(xiàn)RabbitMQ五大工作模式

五大工作模式在之前的文章提到,如果不了解可以查看【RabbitMQ】Rabbbit的六種工作模式以及代碼實(shí)現(xiàn)_1373i的博客-CSDN博客https://blog.csdn.net/qq_61903414/article/details/130156097?spm=1001.2014.3001.5501

1、簡(jiǎn)單模式

1.生產(chǎn)者

我們先要在生產(chǎn)者xml配置文件里創(chuàng)建一個(gè)隊(duì)列

spring rabbitmq,RabbitMQ,Java,java-rabbitmq,rabbitmq,spring

然后在項(xiàng)目目錄下創(chuàng)建一個(gè)測(cè)試類(lèi)類(lèi)加注解讀取配置文件以及環(huán)境

spring rabbitmq,RabbitMQ,Java,java-rabbitmq,rabbitmq,spring

在類(lèi)里注入RabbitTemplate對(duì)象,通過(guò)該對(duì)象的convertAndSend方法發(fā)送消息,由于我們使用的是簡(jiǎn)單模式,所以此處路由為隊(duì)列名

spring rabbitmq,RabbitMQ,Java,java-rabbitmq,rabbitmq,spring

package com.itheima;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:producer.xml")
public class ProducerTest {

    // 1.注入 RabbitTemplate
    @Autowired
    private RabbitTemplate rabbitTemplate;

    @Test
    public void testHelloWorld(){
        // 2.發(fā)送消息
        rabbitTemplate.convertAndSend("test","hello mq");
    }
}

運(yùn)行代碼查看服務(wù)器spring rabbitmq,RabbitMQ,Java,java-rabbitmq,rabbitmq,spring?

2.消費(fèi)者

首先我們需要?jiǎng)?chuàng)建一個(gè)監(jiān)聽(tīng)類(lèi)實(shí)現(xiàn)MessageListener接口并重寫(xiě)onMessage方法

spring rabbitmq,RabbitMQ,Java,java-rabbitmq,rabbitmq,spring

然后將這個(gè)類(lèi)注入spring里,在xml里創(chuàng)建監(jiān)聽(tīng)器容器將這個(gè)類(lèi)與隊(duì)列綁定去監(jiān)聽(tīng)隊(duì)列

spring rabbitmq,RabbitMQ,Java,java-rabbitmq,rabbitmq,spring

然后創(chuàng)建一個(gè)測(cè)試類(lèi),與生產(chǎn)者相同加兩個(gè) 注解,然后在測(cè)試方法里死循環(huán)的去監(jiān)聽(tīng)隊(duì)列?

spring rabbitmq,RabbitMQ,Java,java-rabbitmq,rabbitmq,spring

運(yùn)行代碼?spring rabbitmq,RabbitMQ,Java,java-rabbitmq,rabbitmq,spring

spring rabbitmq,RabbitMQ,Java,java-rabbitmq,rabbitmq,spring??

2、work queues工作隊(duì)列模式

工作隊(duì)列模式與上述相同,將生產(chǎn)者復(fù)制一份即可

1.生產(chǎn)者

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:producer.xml")
public class ProducerTest {

    // 1.注入 RabbitTemplate
    @Autowired
    private RabbitTemplate rabbitTemplate;

    @Test
    public void testHelloWorld(){
        // 2.發(fā)送消息
        rabbitTemplate.convertAndSend("test","hello mq");
    }
}

2.消費(fèi)者

創(chuàng)建兩個(gè)消費(fèi)者類(lèi)實(shí)現(xiàn)MessageListener接口重寫(xiě)onMessage方法然后將其注入Spring容器,在監(jiān)聽(tīng)容器將隊(duì)列與spring bean綁定即可

package com.example.rabbitmq.listener;

import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageListener;

public class SpringQueueListener1 implements MessageListener {
    @Override
    public void onMessage(Message message) {
        //打印消息
        System.out.println("收到消息:" + new String(message.getBody()));
    }
}
package com.example.rabbitmq.listener;

import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageListener;

public class SpringQueueListener2 implements MessageListener {
    @Override
    public void onMessage(Message message) {
        //打印消息
        System.out.println("收到消息:" + new String(message.getBody()));
    }
}
<bean id="springQueueListener1" class="com.example.rabbitmq.listener.SpringQueueListener1"/>
    <bean id="springQueueListener2" class="com.example.rabbitmq.listener.SpringQueueListener2"/>


    <rabbit:listener-container connection-factory="connectionFactory" auto-declare="true">
        <rabbit:listener ref="springQueueListener1" queue-names="test"></rabbit:listener>
        <rabbit:listener ref="springQueueListener2" queue-names="test"></rabbit:listener>
    </rabbit:listener-container>

3、pub/sub訂閱模式

訂閱模式與前兩種不同,訂閱模式需要使用到fanout類(lèi)型的交換機(jī),并且將隊(duì)列與之綁定,他的生產(chǎn)者在xml文件里需要去創(chuàng)建兩個(gè)隊(duì)列與fanout類(lèi)型的交換機(jī)并綁定,在發(fā)送消息時(shí)指定交換機(jī)名稱即可,而消費(fèi)者則與前者相同,只是需要修改指定監(jiān)聽(tīng)的隊(duì)列名

1.生產(chǎn)者

xml文件創(chuàng)建隊(duì)列與交換機(jī)

 <rabbit:queue id="fQueue1" name="fQueue1" auto-declare="true" auto-delete="false" durable="true"></rabbit:queue>
    <rabbit:queue id="fQueue2" name="fQueue2" auto-declare="true" auto-delete="false" durable="true"></rabbit:queue>

    <rabbit:fanout-exchange id="fExchange" name="fExchange" auto-declare="true">
        <rabbit:bindings>
            <rabbit:binding queue="fQueue1"></rabbit:binding>
            <rabbit:binding queue="fQueue2"></rabbit:binding>
        </rabbit:bindings>
    </rabbit:fanout-exchange>

此時(shí)我們只需要在發(fā)送消息時(shí)指定交換機(jī)即可spring rabbitmq,RabbitMQ,Java,java-rabbitmq,rabbitmq,spring?

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:producer.xml")
public class ProducerTest {

    // 1.注入 RabbitTemplate
    @Autowired
    private RabbitTemplate rabbitTemplate;

    @Test
    public void testHelloWorld(){
        // 2.發(fā)送消息
        rabbitTemplate.convertAndSend("test","hello mq");
    }

    @Test
    public void testFanout(){
        rabbitTemplate.convertAndSend("fExchange","","hello fanout");
    }
}

?運(yùn)行代碼spring rabbitmq,RabbitMQ,Java,java-rabbitmq,rabbitmq,spring

2.消費(fèi)者

消費(fèi)者與前面消費(fèi)者創(chuàng)建相同,只需修改對(duì)應(yīng)的監(jiān)聽(tīng)隊(duì)列名即可

4、routing路由模式

路由模式與訂閱模式相同都需要?jiǎng)?chuàng)建交換機(jī),路由模式需要?jiǎng)?chuàng)建direct類(lèi)型交換機(jī),且在綁定隊(duì)列時(shí)需要指定該隊(duì)列的路由key

1.生產(chǎn)者

xml文件--創(chuàng)建交換機(jī)

 <rabbit:queue id="dQueue1" name="dQueue1" auto-declare="true"></rabbit:queue>
    <rabbit:queue id="dQueue2" name="dQueue2" auto-declare="true"></rabbit:queue>

    <rabbit:direct-exchange name="dExchange" id="dExchange" auto-declare="true">
        <rabbit:bindings>
            <rabbit:binding queue="dQueue1" key="q1"></rabbit:binding>
            <rabbit:binding queue="dQueue2" key="q2"></rabbit:binding>
        </rabbit:bindings>
    </rabbit:direct-exchange>

發(fā)送消息時(shí)需要指定交換機(jī)以及路由spring rabbitmq,RabbitMQ,Java,java-rabbitmq,rabbitmq,spring

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:producer.xml")
public class ProducerTest {

    // 1.注入 RabbitTemplate
    @Autowired
    private RabbitTemplate rabbitTemplate;

    @Test
    public void testHelloWorld(){
        // 2.發(fā)送消息
        rabbitTemplate.convertAndSend("test","hello mq");
    }

    @Test
    public void testFanout(){
        rabbitTemplate.convertAndSend("fExchange","","hello fanout");
    }

@Test
    public void testDirect(){
        //2.發(fā)送消息

        rabbitTemplate.convertAndSend("dExchange","q1","hello direct");
    }
}

?運(yùn)行代碼查看控制臺(tái)spring rabbitmq,RabbitMQ,Java,java-rabbitmq,rabbitmq,spring

?2.消費(fèi)者

消費(fèi)者代碼與前面相同,只需修改監(jiān)聽(tīng)隊(duì)列名即可

5、topics通配符模式

整體代碼與路由模式類(lèi)似,他需要?jiǎng)?chuàng)建topic類(lèi)型交換機(jī)且配置通配符規(guī)則

1.生產(chǎn)者

xml文件創(chuàng)建交換機(jī)與隊(duì)列

<rabbit:queue id="tQueue1" name="tQueue1" auto-declare="true"></rabbit:queue>
    <rabbit:queue id="tQueue2" name="tQueue2" auto-declare="true"></rabbit:queue>
    
    <rabbit:topic-exchange name="tExchange" id="tExchange" auto-declare="true">
        <rabbit:bindings>
            <rabbit:binding pattern="A.*" queue="tQueue1"></rabbit:binding>
            <rabbit:binding pattern="#.info" queue="tQueue2"></rabbit:binding>
        </rabbit:bindings>
    </rabbit:topic-exchange>

發(fā)送消息時(shí)需要填寫(xiě)匹配路由

@Test
    public void testTopic() {
        rabbitTemplate.convertAndSend("tExchange","A.ERROR","A系統(tǒng)的error錯(cuò)誤");
    }

?運(yùn)行代碼查看控制臺(tái)spring rabbitmq,RabbitMQ,Java,java-rabbitmq,rabbitmq,spring

2.消費(fèi)者

消費(fèi)者代碼與前面相同,依舊只需要修改監(jiān)聽(tīng)隊(duì)列名即可文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-810004.html

到了這里,關(guān)于【RabbitMQ】Spring整合RabbitMQ、Spring實(shí)現(xiàn)RabbitMQ五大工作模式(萬(wàn)字長(zhǎng)文)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 全網(wǎng)最全RabbitMQ筆記 | 萬(wàn)字長(zhǎng)文爆肝RabbitMQ基礎(chǔ)

    全網(wǎng)最全RabbitMQ筆記 | 萬(wàn)字長(zhǎng)文爆肝RabbitMQ基礎(chǔ)

    萬(wàn)字長(zhǎng)文爆肝黑馬程序員2023最新版RabbitMQ教程。筆者認(rèn)真跟著這個(gè)教程,再一次認(rèn)真學(xué)習(xí)一遍RabbitMQ教程,溫故而知新,對(duì)RabbitMQ消息隊(duì)列也有了更加深入細(xì)致的了解。因此筆者做了全網(wǎng)最全面詳細(xì)的學(xué)習(xí)筆記,通篇圖文并茂,細(xì)致入微,由淺入深,循序漸進(jìn),深入剖析原理,

    2024年04月14日
    瀏覽(15)
  • ChatGPT的工作原理(純干貨,萬(wàn)字長(zhǎng)文)

    ChatGPT的工作原理(純干貨,萬(wàn)字長(zhǎng)文)

    ChatGPT 能夠自動(dòng)生成一些讀起來(lái)表面上甚至像人寫(xiě)的文字的東西,這非常了不起,而且出乎意料。但它是如何做到的?為什么它能發(fā)揮作用?我在這里的目的是大致介紹一下 ChatGPT 內(nèi)部的情況,然后探討一下為什么它能很好地生成我們認(rèn)為是有意義的文本。 我首先要說(shuō)明一下

    2024年02月03日
    瀏覽(25)
  • RabbitMQ(一) - 基本結(jié)構(gòu)、SpringBoot整合RabbitMQ、工作隊(duì)列、發(fā)布訂閱、直接、主題交換機(jī)模式

    RabbitMQ(一) - 基本結(jié)構(gòu)、SpringBoot整合RabbitMQ、工作隊(duì)列、發(fā)布訂閱、直接、主題交換機(jī)模式

    Publisher : 生產(chǎn)者 Queue: 存儲(chǔ)消息的容器隊(duì)列; Consumer:消費(fèi)者 Connection:消費(fèi)者與消息服務(wù)的TCP連接 Channel:信道,是TCP里面的虛擬連接。例如:電纜相當(dāng)于TCP,信道是一條獨(dú)立光纖束,一條TCP連接上創(chuàng)建多少條信道是沒(méi)有限制的。TCP一旦打開(kāi),就會(huì)出AMQP信道。無(wú)論是發(fā)布消息

    2024年02月14日
    瀏覽(23)
  • 萬(wàn)字長(zhǎng)文帶你吃透SpringCloudGateway工作原理+動(dòng)態(tài)路由+源碼解析

    萬(wàn)字長(zhǎng)文帶你吃透SpringCloudGateway工作原理+動(dòng)態(tài)路由+源碼解析

    Spring Cloud 2.x 實(shí) 現(xiàn) 了 社 區(qū) 生 態(tài) 下 的 Spring CloudGateway(簡(jiǎn)稱SCG)微服務(wù)網(wǎng)關(guān)項(xiàng)目。Spring Cloud Gateway基于WebFlux框架開(kāi)發(fā),目標(biāo)是替換掉Zuul。 Spring Cloud Gateway主要有兩個(gè)特性: 非阻塞,默認(rèn)使用RxNetty作為響應(yīng)式Web容器,通過(guò)非阻塞方式,利用較少的線程和資源來(lái)處理高并發(fā)請(qǐng)

    2023年04月08日
    瀏覽(15)
  • 【萬(wàn)字長(zhǎng)文】SpringBoot整合SpringSecurity+JWT+Redis完整教程(提供Gitee源碼)

    前言:最近在學(xué)習(xí)SpringSecurity的過(guò)程中,參考了很多網(wǎng)上的教程,同時(shí)也參考了一些目前主流的開(kāi)源框架,于是結(jié)合自己的思路寫(xiě)了一個(gè)SpringBoot整合SpringSecurity+JWT+Redis完整的項(xiàng)目,從0到1寫(xiě)完感覺(jué)還是收獲到不少的,于是我把我完整的筆記寫(xiě)成博客分享給大家,算是比較全的

    2024年02月15日
    瀏覽(49)
  • Spring Boot整合RabbitMQ之發(fā)布與訂閱模式

    Spring Boot整合RabbitMQ之發(fā)布與訂閱模式

    RabbitMQ的模式中,常用的模式有:簡(jiǎn)單模式,發(fā)布與訂閱模式,工作模式,路由模式,主題模式。簡(jiǎn)單模式不太會(huì)運(yùn)用到工作中,我們可以使用 RabbitMQ 的發(fā)布訂閱模式,實(shí)現(xiàn): 用戶發(fā)布動(dòng)態(tài),其“粉絲”收到其發(fā)布動(dòng)態(tài)的消息 用戶下訂單,庫(kù)存模塊、支付模塊等收到消息并

    2024年02月12日
    瀏覽(22)
  • Spring Boot整合RabbitMQ之路由模式(Direct)

    Spring Boot整合RabbitMQ之路由模式(Direct)

    RabbitMQ中的路由模式(Direct模式)應(yīng)該是在實(shí)際工作中運(yùn)用的比較多的一種模式了,這個(gè)模式和發(fā)布與訂閱模式的區(qū)別在于路由模式需要有一個(gè)routingKey,在配置上,交換機(jī)類(lèi)型需要注入DirectExchange類(lèi)型的交換機(jī)bean對(duì)象。在交換機(jī)和隊(duì)列的綁定過(guò)程中,綁定關(guān)系需要在綁定一個(gè)

    2024年02月11日
    瀏覽(20)
  • Spring整合RabbitMQ-配制文件方式-3-消息拉模式

    拉消息的消費(fèi)者 spring-rabbit.xml 當(dāng)啟動(dòng)消費(fèi)者后,便可獲取到發(fā)送至隊(duì)列的消息 檢查隊(duì)列的消息的情況: 經(jīng)過(guò)檢查確認(rèn),發(fā)現(xiàn)消息已經(jīng)被消費(fèi)了。 至此拉模式的消費(fèi)者完成。

    2024年02月09日
    瀏覽(19)
  • 【萬(wàn)字長(zhǎng)文】SpringBoot整合MyBatis搭建MySQL多數(shù)據(jù)源完整教程(提供Gitee源碼)

    前言:在我往期的博客介紹了2種關(guān)于如何使用SpringBoot搭建多數(shù)據(jù)源操作,本期博客我參考的是目前主流的框架,把最后一種整合多數(shù)據(jù)源的方式以博客的形式講解完,整合的過(guò)程比較傳統(tǒng)和復(fù)雜,不過(guò)我依舊會(huì)把每個(gè)實(shí)體類(lèi)的思路都給大家講解清楚的,項(xiàng)目的最后我都會(huì)提

    2024年02月14日
    瀏覽(24)
  • Spring整合RabbitMQ-配制文件方式-2-推模式消費(fèi)者

    推模式的消費(fèi)者 在推模式中使用可以兩種實(shí)現(xiàn): 使用ChannelAwareMessageListener. 除消息外,還提供了Channel這個(gè)對(duì)象,通過(guò)channel可以有更大的靈活性。 使用MessageListener 基本的消息的臨時(shí)。普通的場(chǎng)景基本夠用。 此處以ChannelAwareMessageListener為樣例: spring-rabbit.xml 容器啟動(dòng)類(lèi) 首先

    2024年02月09日
    瀏覽(20)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包