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

服務器的異步通信——RabbitMQ

這篇具有很好參考價值的文章主要介紹了服務器的異步通信——RabbitMQ。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一、同步通信 VS 異步通信

二、MQ——消息隊列

RabbitMQ?

RabbitMQ安裝?

RabbitMQ的整體架構

常見消息模型?

?基本消息隊列(BasicQueue)

工作消息隊列(WorkQueue)

?發(fā)布、訂閱(Publish、Subscribe)

?Fanout Exchange

Direct Exchange?

Topic Exchange?

SpringAMQP-消息轉換器?


一、同步通信 VS 異步通信

同步通信:雙方在同一個時鐘信號的控制下,進行數(shù)據(jù)的接收和發(fā)送,來一個時鐘,發(fā)送端發(fā)送,接收端接收,他們彼此之間的工作狀態(tài)是一致的,例如直播、打電話。

優(yōu)點:

  • 時效性強,能夠立即得到結果

缺點:

  • 耦合性較高:每次加入新的需求,都需要修改原有代碼
  • 性能下降:調用者需要等待服務提供者響應,若調用鏈過長則響應時間等于每次調用時間之和
  • 資源利用率低:調用鏈中的每個服務在等待響應的過程中,不能釋放請求占用的資源,高并發(fā)的情況下會造成資源的極度浪費
  • 級聯(lián)失?。喝绻仗峁┱叱霈F(xiàn)問題,所有的調用方也會跟著出問題

適用場景:業(yè)務要求時效性高

異步通信:異步通信在發(fā)送字符時,所發(fā)送的字符之間的時間間隔可以是任意的。例如微信聊天。

在異步調用過程常見的實現(xiàn)就是事件驅動模式,系統(tǒng)中發(fā)生的事件會觸發(fā)相應的事件處理器或監(jiān)聽器
,從而實現(xiàn)特定的業(yè)務邏輯或功能。

例如在如下的支付場景中,當有請求發(fā)送給支付服務時,支付服務就會通知Broker,接著后續(xù)的訂閱事件就會接收到請求,開始同時處理業(yè)務,但是支付服務不用等到后續(xù)訂閱事件完成后再返回,而是將請求通知給Broker之后支付服務就會返回結果。

服務器的異步通信——RabbitMQ,微服務,rabbitmq,分布式

優(yōu)點:

  • 服務解耦
  • 性能提升,吞吐量提高
  • 服務之間沒有強依賴,不用擔心級聯(lián)失敗問題(故障隔離)
  • 流量削峰

缺點:

  • 依賴于Broker的可靠性、安全性和吞吐能力
  • 結構復雜后,業(yè)務沒有了明顯的流水線,難以追蹤管理

適用場景:對于并發(fā)和吞吐量的要求高,時效性的要求低

二、MQ——消息隊列

MQ(消息隊列):存放消息的隊列,也是事件驅動架構的Broker。

常見的消息隊列實現(xiàn)對比:

服務器的異步通信——RabbitMQ,微服務,rabbitmq,分布式

RabbitMQ?

RabbitMQ是基于Erlang語言開發(fā)的消息通信中間件,RabbitMQ的性能以及可用性較好,國內應用較為廣泛,所以對RabbitMQ進行重點學習。

RabbitMQ的官網(wǎng)地址:https://www.rabbitmq.com

RabbitMQ安裝?

可以根據(jù)自己的需求在RabbitMQ的官網(wǎng)進行查看:下載和安裝 RabbitMQ — 兔子MQ

RabbitMQ的整體架構

服務器的異步通信——RabbitMQ,微服務,rabbitmq,分布式??首先,Publisher會把消息發(fā)送給exchange(交換機),exchange負責路由再把消息投遞到queue(隊列),queue負責暫存消息,Consumer會從隊列中獲取消息并處理消息。

RabbitMQ中的幾個概念:

? channel :操作 MQ 的工具
? exchange :路由消息到隊列中
? queue :緩存消息
? virtual host :虛擬主機,是對 queue 、 exchange 等資源的邏輯分組

常見消息模型?

RabbitMQ的官方文檔中給出了5個MQ的Demo實例,可以分為如下:

  • 基本消息隊列(BasicQueue)
  • 工作消息隊列(WorkQueue)
  • 發(fā)布訂閱(Publish、Subscribe),又根據(jù)交換機類型不同分為三種:

? ? ? ? ? ? ? ??Fanout Exchange:廣播

? ? ? ? ? ? ? ? Direct?Exchange:路由

? ? ? ? ? ? ? ? Topic Exchange:主題

?基本消息隊列(BasicQueue)

官方的HelloWorld是基于最基礎的消息隊列模型來實現(xiàn)的,只包括三個角色:

  • publisher:消息發(fā)布者,將消息發(fā)送到隊列queue
  • queue:消息隊列,負責接受并緩存消息
  • consumer:訂閱隊列,處理隊列中的消息
服務器的異步通信——RabbitMQ,微服務,rabbitmq,分布式?
?
在RabbitMQ中需要了解的端口:
服務器的異步通信——RabbitMQ,微服務,rabbitmq,分布式?

在使用端口時,需要在云服務器上開放所用的端口?

基本消息隊列的消息發(fā)送流程:

  1. 建立Connection
  2. 創(chuàng)建Channel
  3. 利用Channel聲明隊列
  4. 利用Channel向隊列中發(fā)送消息

代碼實現(xiàn):

public class PublisherTest {
    @Test
    public void testSendMessage() throws IOException, TimeoutException {
        // 1.建立連接
        ConnectionFactory factory = new ConnectionFactory();
        // 1.1.設置連接參數(shù),分別是:主機名、端口號、vhost、用戶名、密碼
        factory.setHost("x.x.x.x");
        factory.setPort(5672);
        factory.setVirtualHost("/");
        factory.setUsername("xx");
        factory.setPassword("xx");
        // 1.2.建立連接
        Connection connection = factory.newConnection();

        // 2.創(chuàng)建通道Channel
        Channel channel = connection.createChannel();

        // 3.創(chuàng)建隊列
        String queueName = "simple.queue";
        channel.queueDeclare(queueName, false, false, false, null);

        // 4.發(fā)送消息
        String message = "hello, rabbitmq!";
        channel.basicPublish("", queueName, null, message.getBytes());
        System.out.println("發(fā)送消息成功:【" + message + "】");

        // 5.關閉通道和連接
        channel.close();
        connection.close();

    }
}

運行結果:

服務器的異步通信——RabbitMQ,微服務,rabbitmq,分布式?

基本消息隊列的消息接收流程:?

  1. 建立Connection
  2. 創(chuàng)建Channel
  3. 利用Channel聲明隊列
  4. 定義Consumer的消費行為handleDelivery()
  5. 利用Channel將消費者與隊列進行綁定

代碼實現(xiàn):

public class ConsumerTest {

    public static void main(String[] args) throws IOException, TimeoutException {
        // 1.建立連接
        ConnectionFactory factory = new ConnectionFactory();
        // 1.1.設置連接參數(shù),分別是:主機名、端口號、vhost、用戶名、密碼
        factory.setHost("x.x.x.x");
        factory.setPort(5672);
        factory.setVirtualHost("/");
        factory.setUsername("xx");
        factory.setPassword("xx");
        // 1.2.建立連接
        Connection connection = factory.newConnection();

        // 2.創(chuàng)建通道Channel
        Channel channel = connection.createChannel();

        // 3.創(chuàng)建隊列
        String queueName = "simple.queue";
        channel.queueDeclare(queueName, false, false, false, null);

        // 4.訂閱消息
        channel.basicConsume(queueName, true, new DefaultConsumer(channel){
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope,
                                       AMQP.BasicProperties properties, byte[] body) throws IOException {
                // 5.處理消息
                String message = new String(body);
                System.out.println("接收到消息:【" + message + "】");
            }
        });
        System.out.println("等待接收消息。。。。");
    }
}

運行結果:

服務器的異步通信——RabbitMQ,微服務,rabbitmq,分布式

上述實現(xiàn)方式相對比較復雜,就引入了SpringAMQP來實現(xiàn)。

AMQP:是用于在應用程序之間傳遞業(yè)務消息的開放標準。該協(xié)議與語言和平臺無關,更符合微服務中獨立性的要求。?

SpringAMQP:SpringAMQP是基于AMQP協(xié)議定義的一套API規(guī)范,提供了模板來發(fā)送和接收消息。包含兩部分,其中spring-amqp是基礎抽象,spring-rabbit是底層的默認實現(xiàn)。

SpringAMQP的官方地址

那么利用SpringAMQP來實現(xiàn)基本消息隊列的流程如下:

  1. 在父工程中引入spring-amqp的依賴
  2. 在publisher服務中利用RabbitTemplate發(fā)送消息到simple.queue這個隊列
  3. 在consumer服務中編寫消費邏輯,綁定simple.queue這個隊列

具體實現(xiàn):

1、在父工程中引入spring-amqp的依賴:

        <!--AMQP依賴,包含RabbitMQ-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>

2、在publisher中編寫測試方法,向simple.queue發(fā)送消息:

在publisher服務的配置文件中添加mq的連接信息:

spring:
  rabbitmq:
    host:  # rabbitMQ的ip地址
    port: 5672 # 端口
    username: # 用戶名
    password: # 密碼
    virtual-host: # 虛擬主機

在publisher服務中新建一個測試類,編寫測試方法:

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringAmqpTest {
    @Autowired
    private RabbitTemplate rabbitTemplate;

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

在RabbitMQ中的simple隊列中查詢信息:

服務器的異步通信——RabbitMQ,微服務,rabbitmq,分布式

3、在consumer服務中編寫消費邏輯,監(jiān)聽simple.queue

在consumer服務的配置文件中添加mq連接信息:

spring:
  rabbitmq:
    host:  # rabbitMQ的ip地址
    port: 5672 # 端口
    username: # 用戶名
    password: # 密碼
    virtual-host: # 虛擬主機

在consumer服務中新建一個類,編寫具體的消費邏輯:

@Component
public class SpringRabbitListener { 
   @RabbitListener(queues = "simple.queue")
    public void listenSimpleQueue(String msg) throws InterruptedException {
        System.out.println("消費者接收到消息:【" + msg + "】" + LocalTime.now());
        Thread.sleep(20);
    }
}

運行啟動類:

服務器的異步通信——RabbitMQ,微服務,rabbitmq,分布式

工作消息隊列(WorkQueue)

下面場景中如果queue中有50條請求消息,但是consumer1只能處理40條,剩余的10條就可以由consumer進行處理,所以說工作消息隊列可以提高消息的處理速度,避免隊列消息堆積

服務器的異步通信——RabbitMQ,微服務,rabbitmq,分布式

模擬Workqueue,實現(xiàn)一個隊列綁定多個消費者,基本實現(xiàn)思路如下:

  1. 在publisher服務中定義測試方法,每秒產(chǎn)生50條消息,發(fā)送到simple.queue中
  2. 在consumer服務中定義兩個消息監(jiān)聽者,都監(jiān)聽simple.queue隊列
  3. 消費者1每秒處理50條消息,消費者2每秒處理10條消息

代碼實現(xiàn):

在publisher服務中定義測試方法,每秒產(chǎn)生50條消息,發(fā)送到simple.queue中

    public void testSendMessage2WorkQueue() throws InterruptedException {
        String queueName = "simple.queue";
        String message = "hello, message__";
        for (int i = 1; i <= 50; i++) {
            rabbitTemplate.convertAndSend(queueName, message + i);
            Thread.sleep(20);
        }
    }
在consumer服務中定義兩個消息監(jiān)聽者,都監(jiān)聽simple.queue隊列,設置消費者1每秒處理50條消息,消費者2每秒處理10條消息
    @RabbitListener(queues = "simple.queue")
    public void listenWorkQueue1(String msg) throws InterruptedException {
        System.out.println("消費者1接收到消息:【" + msg + "】" + LocalTime.now());
        Thread.sleep(20);
    }

    @RabbitListener(queues = "simple.queue")
    public void listenWorkQueue2(String msg) throws InterruptedException {
        System.err.println("消費者2........接收到消息:【" + msg + "】" + LocalTime.now());
        Thread.sleep(200);
    }

修改application.yml文件,設置preFetch這個值,可以控制預取消息的上限,確保消費者2取消息時只能取一條,提高效率(“能者多勞”):

spring:
  rabbitmq:
    listener:
      simple:
        prefetch: 1

運行結果:

服務器的異步通信——RabbitMQ,微服務,rabbitmq,分布式

?發(fā)布、訂閱(Publish、Subscribe)

發(fā)布訂閱模式與之前案例的區(qū)別就是允許將同一消息發(fā)送給多個消費者。實現(xiàn)方式是加入了exchange(交換機)。

常見exchange類型包括:

  • Fanout:廣播
  • Direct:路由
  • Topic:話題

服務器的異步通信——RabbitMQ,微服務,rabbitmq,分布式

exchange負責消息路由,而不是存儲,路由失敗則消息丟失?

?Fanout Exchange

?Fanout Exchange會將接收到的消息路由到每一個跟其綁定的queue中,如下:

服務器的異步通信——RabbitMQ,微服務,rabbitmq,分布式

基本實現(xiàn)思路如下:

  1. 在consumer中,利用代碼聲明隊列、交換機,將二者進行綁定
  2. 在consumer中,編寫兩個消費方法,分別監(jiān)聽fanout.queue1和fanout.queue2
  3. 在publisher中編寫測試方法,向fanout發(fā)送消息

代碼實現(xiàn):

在consumer中,利用代碼聲明隊列、交換機,將二者進行綁定

@Configuration
public class FanoutConfig {
    // itcast.fanout
    @Bean
    public FanoutExchange fanoutExchange(){
        return new FanoutExchange("itcast.fanout");
    }

    // fanout.queue1
    @Bean
    public Queue fanoutQueue1(){
        return new Queue("fanout.queue1");
    }

    // 綁定隊列1到交換機
    @Bean
    public Binding fanoutBinding1(Queue fanoutQueue1, FanoutExchange fanoutExchange){
        return BindingBuilder.bind(fanoutQueue1).to(fanoutExchange);
    }

    // fanout.queue2
    @Bean
    public Queue fanoutQueue2(){
        return new Queue("fanout.queue2");
    }

    // 綁定隊列2到交換機
    @Bean
    public Binding fanoutBinding2(Queue fanoutQueue2, FanoutExchange fanoutExchange){
        return BindingBuilder.bind(fanoutQueue2).to(fanoutExchange);
    }
}

在consumer中,編寫兩個消費方法,分別監(jiān)聽fanout.queue1和fanout.queue2

    @RabbitListener(queues = "fanout.queue1")
    public void listenFanoutQueue1(String msg) {
        System.out.println("消費者接收到fanout.queue1的消息:【" + msg + "】");
    }
    @RabbitListener(queues = "fanout.queue2")
    public void listenFanoutQueue2(String msg) {
        System.out.println("消費者接收到fanout.queue2的消息:【" + msg + "】");
    }

在publisher中編寫測試方法,向fanout發(fā)送消息

    @Test
    public void testSendFanoutExchange() {
        // 交換機名稱
        String exchangeName = "itcast.fanout";
        // 消息
        String message = "hello, every one!";
        // 發(fā)送消息
        rabbitTemplate.convertAndSend(exchangeName, "", message);
    }

運行結果:

服務器的異步通信——RabbitMQ,微服務,rabbitmq,分布式

Direct Exchange?

Direct Exchange會將接收到的消息根據(jù)規(guī)則路由到指定的Queue,因此被稱為路由模式

  • l每一個Queue都與Exchange設置一個BindingKey
  • l發(fā)布者發(fā)送消息時,指定消息的RoutingKey
  • lExchange將消息路由到BindingKey與消息RoutingKey一致的隊列

服務器的異步通信——RabbitMQ,微服務,rabbitmq,分布式

基本實現(xiàn)思路如下:

  1. 利用@RabbitListener聲明ExchangeQueue、RoutingKey
  2. consumer服務中,編寫兩個消費者方法,分別監(jiān)聽direct.queue1direct.queue2
  3. publisher中編寫測試方法,向itcast. direct發(fā)送消息

代碼實現(xiàn):

在consumer服務中,編寫兩個消費者方法,分別監(jiān)聽direct.queue1direct.queue2,并利用@RabbitListener聲明Exchange、QueueRoutingKey

    @RabbitListener(bindings = @QueueBinding(
            value = @Queue(name = "direct.queue1"),
            exchange = @Exchange(name = "itcast.direct", type = ExchangeTypes.DIRECT),
            key = {"red", "blue"}
    ))
    public void listenDirectQueue1(String msg){
        System.out.println("消費者接收到direct.queue1的消息:【" + msg + "】");
    }

    @RabbitListener(bindings = @QueueBinding(
            value = @Queue(name = "direct.queue2"),
            exchange = @Exchange(name = "itcast.direct", type = ExchangeTypes.DIRECT),
            key = {"red", "yellow"}
    ))
    public void listenDirectQueue2(String msg){
        System.out.println("消費者接收到direct.queue2的消息:【" + msg + "】");
    }

在publisher服務發(fā)送消息到DirectExchange

    @Test
    public void testSendDirectExchange() {
        // 交換機名稱
        String exchangeName = "itcast.direct";
        // 消息
        String message = "hello, red!";
        // 發(fā)送消息
        rabbitTemplate.convertAndSend(exchangeName, "red", message);
    }

運行結果:

服務器的異步通信——RabbitMQ,微服務,rabbitmq,分布式

Topic Exchange?

Topic Exchange與Direct Exchange類似,區(qū)別在于Topic Exchange的routingKey必須是多個單詞的列表,并且以.分割

QueueExchange指定BindingKey時可以使用通配符:

#:代指0個或多個單詞

*:代指一個單詞

服務器的異步通信——RabbitMQ,微服務,rabbitmq,分布式

基本實現(xiàn)思路如下:

  1. 利用@RabbitListener聲明Exchange、Queue、RoutingKey
  2. 在consumer服務中,編寫兩個消費者方法,分別監(jiān)聽topic.queue1topic.queue2
  3. 在publisher中編寫測試方法,向itcast. topic發(fā)送消息

代碼實現(xiàn):

利用@RabbitListener聲明ExchangeQueue、RoutingKey,在consumer服務中,編寫兩個消費者方法,分別監(jiān)聽topic.queue1topic.queue2

    @RabbitListener(bindings = @QueueBinding(
            value = @Queue(name = "topic.queue1"),
            exchange = @Exchange(name = "itcast.topic", type = ExchangeTypes.TOPIC),
            key = "china.#"
    ))
    public void listenTopicQueue1(String msg){
        System.out.println("消費者接收到topic.queue1的消息:【" + msg + "】");
    }

    @RabbitListener(bindings = @QueueBinding(
            value = @Queue(name = "topic.queue2"),
            exchange = @Exchange(name = "itcast.topic", type = ExchangeTypes.TOPIC),
            key = "#.news"
    ))
    public void listenTopicQueue2(String msg){
        System.out.println("消費者接收到topic.queue2的消息:【" + msg + "】");
    }

在publisher中編寫測試方法,向itcast. topic發(fā)送消息

    @Test
    public void testSendTopicExchange() {
        // 交換機名稱
        String exchangeName = "itcast.topic";
        // 消息
        String message = "今天天氣不錯,我的心情好極了!";
        // 發(fā)送消息
        rabbitTemplate.convertAndSend(exchangeName, "china.weather", message);
    }

運行結果:

服務器的異步通信——RabbitMQ,微服務,rabbitmq,分布式

SpringAMQP-消息轉換器?

SpringAMQP的發(fā)送方法中,接收消息的類型是Object,也就是說我們可以發(fā)送任意對象類型的消息,SpringAMQP會幫我們序列化為字節(jié)后發(fā)送。

Spring的對消息對象的處理是由org.springframework.amqp.support.converter.MessageConverter來處理的。而默認實現(xiàn)是SimpleMessageConverter,基于JDKObjectOutputStream完成序列化。

如果要修改只需要定義一個MessageConverter 類型的Bean即可。

推薦用JSON方式序列化,實現(xiàn)步驟如下:

在父工程中引入依賴

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>

在publisher和consumer服務中聲明MessageConverter:文章來源地址http://www.zghlxwxcb.cn/news/detail-820917.html

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

到了這里,關于服務器的異步通信——RabbitMQ的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • 【學習日記2023.6.19】 之 RabbitMQ服務異步通信_消息可靠性_死信交換機_惰性隊列_MQ集群

    【學習日記2023.6.19】 之 RabbitMQ服務異步通信_消息可靠性_死信交換機_惰性隊列_MQ集群

    消息隊列在使用過程中,面臨著很多實際問題需要思考: 消息從發(fā)送,到消費者接收,會經(jīng)歷多個過程: 其中的每一步都可能導致消息丟失,常見的丟失原因包括: 發(fā)送時丟失: 生產(chǎn)者發(fā)送的消息未送達exchange 消息到達exchange后未到達queue MQ宕機,queue將消息丟失 consumer接收

    2024年02月11日
    瀏覽(98)
  • 探索 XMLHttpRequest:網(wǎng)頁與服務器的異步通信之道(下)

    探索 XMLHttpRequest:網(wǎng)頁與服務器的異步通信之道(下)

    ?? 前端開發(fā)工程師、技術日更博主、已過CET6 ?? 阿珊和她的貓_ CSDN 博客專家、23年度博客之星前端領域TOP1 ?? ???高級專題作者、打造專欄《前端面試必備》 、《2024面試高頻手撕題》 ?? 藍橋云課 簽約作者、上架課程《Vue.js 和 Egg.js 開發(fā)企業(yè)級健康管理項目》、《帶你

    2024年02月20日
    瀏覽(31)
  • 探索 XMLHttpRequest:網(wǎng)頁與服務器的異步通信之道(上)

    探索 XMLHttpRequest:網(wǎng)頁與服務器的異步通信之道(上)

    ?? 前端開發(fā)工程師、技術日更博主、已過CET6 ?? 阿珊和她的貓_ CSDN 博客專家、23年度博客之星前端領域TOP1 ?? ???高級專題作者、打造專欄《前端面試必備》 、《2024面試高頻手撕題》 ?? 藍橋云課 簽約作者、上架課程《Vue.js 和 Egg.js 開發(fā)企業(yè)級健康管理項目》、《帶你

    2024年02月21日
    瀏覽(21)
  • Windows 下安裝RabbitMQ服務器(超詳細)

    Windows 下安裝RabbitMQ服務器(超詳細)

    ????????RabbitMQ是一個在AMQP協(xié)議標準基礎上完整的,可復用的企業(yè)消息系統(tǒng)。它遵循Mozilla Public License開源協(xié)議,采用 Erlang 實現(xiàn)的工業(yè)級的消息隊列(MQ)服務器,Rabbit MQ 是建立在Erlang OTP平臺上。 ????????安裝RabbitMQ服務器必須首先安裝 Erlang 運行環(huán)境。 ????????安裝

    2024年04月14日
    瀏覽(18)
  • Docker (CentOS)配置rabbitMQ 服務器訪問15672端口顯示服務器拒絕連接

    Docker (CentOS)配置rabbitMQ 服務器訪問15672端口顯示服務器拒絕連接

    在自己的服務器上配置rabbitMq時已經(jīng)啟動成功了,但是訪問就是出錯。 使用以下命令啟動。 ?啟動后可以看到已經(jīng)啟動成功。 輸入地址去訪問看到被拒絕訪問了 ?那么有三種可能性:1、你的防火墻端口沒有開放 使用命令開放端口 ?2、你的服務器安全組沒有添加該端口,去你

    2024年02月14日
    瀏覽(26)
  • 使用Docker安裝運行RabbitMQ---阿里云服務器

    使用Docker安裝運行RabbitMQ---阿里云服務器

    目錄 0、阿里云沒開端口的得要去安全組規(guī)則去添加: 1、下載RabbitMQ鏡像: 2、查看鏡像是否下載成功,得到docker鏡像id: 3、運行RabbitMQ: 4、查看RabbbitMQ容器是否啟動成功: 5、啟動RabbitMQ中的插件管理 6、訪問RabbitMQ的web配置界面 7、運行成功 0、阿里云沒開端口的得要去安全

    2024年03月12日
    瀏覽(24)
  • 三臺Windows服務器搭建RabbitMq集群及鏡像隊列

    三臺Windows服務器搭建RabbitMq集群及鏡像隊列

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 消息中間件-RabbitMq集群搭建及鏡像隊列 (高可用性、一臺宕機自動切換另一臺) ,鏡像隊列是基于普通的集群模式的 提示:以下是本篇文章正文內容,下面案例可供參考 RabbitMQ是實現(xiàn)了高級消息隊列協(xié)議

    2024年02月01日
    瀏覽(25)
  • 【軟件環(huán)境安裝部署】華為云服務器 Docker安裝 RabbitMQ

    【軟件環(huán)境安裝部署】華為云服務器 Docker安裝 RabbitMQ

    RabbitMQ簡稱MQ是一套實現(xiàn)了高級消息隊列協(xié)議的開源消息代理軟件,簡單來說就是一個消息中間件。是一種 程序對程序的通信方法,其服務器也是以高性能、健壯以及可伸縮性出名的Erlang語言編寫而成。 RabbitMQ簡單來說就是一個消息隊列中間件,用來保存消息和傳遞消息的一

    2024年02月13日
    瀏覽(21)
  • Spring Boot 項目應用消息服務器RabbitMQ(簡單介紹)

    Spring Boot 項目應用消息服務器RabbitMQ(簡單介紹)

    本章講述的是在用戶下單環(huán)節(jié),消息服務器RabbitMQ 的應用 在寫一個電商項目的小demo,在電商項目中,消息服務器的應用: 1、訂單狀態(tài)通知:當用戶下單、支付成功、訂單發(fā)貨、訂單完成等關鍵節(jié)點時,可以通過消息服務器向用戶發(fā)送相應的訂單狀態(tài)通知。 2、消息推送:通

    2024年02月13日
    瀏覽(97)
  • 如何才能在Ubuntu系統(tǒng)部署RabbitMQ服務器并公網(wǎng)訪問

    在Ubuntu系統(tǒng)上部署RabbitMQ服務器并公網(wǎng)訪問,可以按照以下步驟進行: 安裝RabbitMQ服務器: 在終端中輸入以下命令安裝RabbitMQ服務器: 啟動RabbitMQ服務器: 在終端中輸入以下命令啟動RabbitMQ服務器: 設置RabbitMQ服務器開機啟動: 在終端中輸入以下命令設置RabbitMQ服務器開機啟

    2024年02月07日
    瀏覽(32)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包