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

rabbitmq的優(yōu)先級隊列

這篇具有很好參考價值的文章主要介紹了rabbitmq的優(yōu)先級隊列。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

在我們系統(tǒng)中有一個 訂單催付 的場景,我們的客戶在天貓下的訂單 , 淘寶會及時將訂單推送給我們,如果在用戶設(shè)定的時間內(nèi)未付款那么就會給用戶推送一條短信提醒,很簡單的一個功能對吧,但是,tianmao商家對我們來說,肯定是要分大客戶和小客戶的對吧,比如像蘋果,小米這樣大商家一年起碼能給我們創(chuàng)造很大的利潤,所以理應(yīng)當(dāng)然,他們的訂單必須得到優(yōu)先處理,而曾經(jīng)我們的后端系統(tǒng)是使用 redis 來存放的定時輪詢,大家都知道 redis 只能用 List 做一個簡簡單單的消息隊列,并不能實現(xiàn)一個優(yōu)先級的場景, 所以訂單量大了后采用 RabbitMQ 進(jìn)行改造和優(yōu)化 , 如果發(fā)現(xiàn)是大客戶的訂單給一個相對比較高的優(yōu)先級,否則就是默認(rèn)優(yōu)先級。

添加隊列

控制臺添加

?代碼添加優(yōu)先級

Map<String, Object> params = new HashMap();
params.put("x-max-priority", 10);
channel.queueDeclare("hello", true, false, false, params);

?消息中代碼添加優(yōu)先級

AMQP.BasicProperties properties = new AMQP.BasicProperties().builder().priority(5).build();

?注意事項

要讓隊列實現(xiàn)優(yōu)先級需要做的事情有如下事情 : 隊列需要設(shè)置為優(yōu)先級隊列,消息需要設(shè)置消息的優(yōu)先級,消費者需要等待消息已經(jīng)發(fā)送到隊列中才去消費,因為這樣才有機(jī)會對消息進(jìn)行排序

?代碼

工具類?

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
 
public class RabbitMqUtils {
     //得到一個連接的 channel
     public static Channel getChannel() throws Exception{
         //創(chuàng)建一個連接工廠
         ConnectionFactory factory = new ConnectionFactory();
         factory.setHost("43.139.59.28");
         factory.setUsername("guest");
         factory.setPassword("guest");
         Connection connection = factory.newConnection();
         Channel channel = connection.createChannel();
         return channel;
     }
}

生產(chǎn)者

import com.example.demo.util.RabbitMqUtils;
import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.Channel;

public class Producer {
   private static final String QUEUE_NAME="hello";
    public static void main(String[] args) throws Exception {
        try (Channel channel = RabbitMqUtils.getChannel();) {
              //給消息賦予一個 priority 屬性
              AMQP.BasicProperties properties = new 
             AMQP.BasicProperties().builder().priority(5).build();
              for (int i = 1; i <11; i++) {
              String message = "info"+i;
              if(i==5){
               channel.basicPublish("", QUEUE_NAME, properties, message.getBytes());
              }else{
               channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
              }
              System.out.println("發(fā)送消息完成:" + message);
           }
        }
    }
}

?生產(chǎn)者

import com.example.demo.util.RabbitMqUtils;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.DeliverCallback;

import java.util.HashMap;
import java.util.Map;

public class Consumer {
  private static final String QUEUE_NAME="hello";
  public static void main(String[] args) throws Exception {
      Channel channel = RabbitMqUtils.getChannel();
      //設(shè)置隊列的最大優(yōu)先級 最大可以設(shè)置到 255 官網(wǎng)推薦 1-10 如果設(shè)置太高比較吃內(nèi)存和 CPU
      Map<String, Object> params = new HashMap();
      params.put("x-max-priority", 10);
      channel.queueDeclare(QUEUE_NAME, true, false, false, params);
      System.out.println("消費者啟動等待消費......");
      DeliverCallback deliverCallback=(consumerTag, delivery)->{
        String receivedMessage = new String(delivery.getBody());
        System.out.println("接收到消息:"+receivedMessage);
      };
      channel.basicConsume(QUEUE_NAME,true,deliverCallback,(consumerTag)->{
        System.out.println("消費者無法消費消息時調(diào)用,如隊列被刪除");
      });
  }
}

?結(jié)果

rabbitmq的優(yōu)先級隊列,rabbitmq,分布式

?i==5的消息被設(shè)置優(yōu)先級為5,所以消息被最先消費文章來源地址http://www.zghlxwxcb.cn/news/detail-674460.html

到了這里,關(guān)于rabbitmq的優(yōu)先級隊列的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Linux_進(jìn)程的優(yōu)先級&&環(huán)境變量&&上下文切換&&優(yōu)先級隊列

    Linux_進(jìn)程的優(yōu)先級&&環(huán)境變量&&上下文切換&&優(yōu)先級隊列

    什么是優(yōu)先級? 指定一個進(jìn)程獲取某種資源的先后順序 本質(zhì)是進(jìn)程獲取cpu資源的優(yōu)先順序 為什么要有優(yōu)先級 進(jìn)程訪問的資源(CPU)是有限的 操作系統(tǒng)關(guān)于調(diào)度和優(yōu)先級的原則:分時操作系統(tǒng),基本的公平,如果進(jìn)程因為長時間不被調(diào)整,就造成了饑餓問題 Linux的優(yōu)先級特

    2024年04月09日
    瀏覽(22)
  • 優(yōu)先級隊列

    優(yōu)先級隊列

    目錄 ?前言: 1、PriorityQueue的特性 .2 PriorityQueue常用接口介紹 Ⅰ、PriorityQueue常見的構(gòu)造方法 ?Ⅱ、常用的方法 Ⅲ、PriorityQueue的擴(kuò)容方式: ?3、應(yīng)用 普通的隊列是一種 先進(jìn)先出 的數(shù)據(jù)結(jié)構(gòu),元素在隊列尾追加,而從隊列頭刪除。在優(yōu)先隊列中,元素被賦予優(yōu)先級。當(dāng)訪問元

    2024年02月02日
    瀏覽(29)
  • 優(yōu)先級隊列【C++】

    優(yōu)先級隊列【C++】

    優(yōu)先隊列(priority_queue)也是隊列的一種,priority_queue的接口是和queue的接口是相同的。所以兩者的使用語法也是相同的。我們直接看優(yōu)先隊列(priority——queue)的底層實現(xiàn)原理。 默認(rèn)情況下priority_queue是大堆。 priority_queue的底層實際上就是堆,模擬實現(xiàn)priority_queue之前,需要

    2024年02月10日
    瀏覽(24)
  • Java優(yōu)先級隊列-堆

    大家好,我是曉星航。今天為大家?guī)淼氖?Java優(yōu)先級隊列(堆) 的講解!?? 使用數(shù)組保存二叉樹結(jié)構(gòu),方式即將二叉樹用 層序遍歷 方式放入數(shù)組中。 一般只適合表示完全二叉樹,因為非完全二叉樹會有空間的浪費。 這種方式的主要用法就是堆的表示。 已知雙親(parent)的下

    2023年04月16日
    瀏覽(21)
  • 【JAVA】優(yōu)先級隊列(堆)

    【JAVA】優(yōu)先級隊列(堆)

    羨慕別人就讓自己變得更好! 優(yōu)先級隊列(堆)可用于topK問題 有大小根堆 注意堆的模擬實現(xiàn) 堅持真的很難但是真的很酷! 隊列是一種先進(jìn)先出(FIFO)的數(shù)據(jù)結(jié)構(gòu),但有些情況下,操作的數(shù)據(jù)可能帶有優(yōu)先級,一般出隊列時,可能需要優(yōu)先級高的元素先出隊列。 此時,數(shù)據(jù)結(jié)

    2024年02月15日
    瀏覽(23)
  • 「數(shù)據(jù)結(jié)構(gòu)」優(yōu)先級隊列

    ?? 個人主頁 :Ice_Sugar_7 ?? 所屬專欄 :Java數(shù)據(jù)結(jié)構(gòu) ?? 歡迎點贊收藏加關(guān)注哦! 優(yōu)先級隊列底層是用堆實現(xiàn)的 ,關(guān)于堆的實現(xiàn),之前的文章已經(jīng)詳細(xì)介紹過了,文章鏈接:二叉樹1:堆的實現(xiàn) 方法 功能 PriorityQueue() 創(chuàng)建一個空的優(yōu)先級隊列,默認(rèn)容量是11 PriorityQueue(int i

    2024年02月20日
    瀏覽(47)
  • 【Java】PriorityQueue--優(yōu)先級隊列

    【Java】PriorityQueue--優(yōu)先級隊列

    目錄 ?一、優(yōu)先級隊列? (1)概念 二、優(yōu)先級隊列的模擬實現(xiàn) (1)堆的概念? (2)堆的存儲方式 ? (3)堆的創(chuàng)建 堆向下調(diào)整 (4)堆的插入與刪除 堆的插入 ?堆的刪除 三、常用接口介紹 1、PriorityQueue的特性 2、PriorityQueue常用接口介紹 ? (1)優(yōu)先級隊列的構(gòu)造 (2)插入

    2024年02月11日
    瀏覽(21)
  • 數(shù)據(jù)結(jié)構(gòu)-優(yōu)先級隊列(堆)

    數(shù)據(jù)結(jié)構(gòu)-優(yōu)先級隊列(堆)

    文章目錄 目錄 文章目錄 前言 一 . 堆 二 . 堆的創(chuàng)建(以大根堆為例) 堆的向下調(diào)整(重難點) ?堆的創(chuàng)建 ?堆的刪除 向上調(diào)整 堆的插入 三 . 優(yōu)先級隊列 總結(jié) 大家好,今天給大家講解一下堆這個數(shù)據(jù)結(jié)構(gòu)和它的實現(xiàn) - 優(yōu)先級隊列 堆(Heap)是一種基于完全二叉樹的數(shù)據(jù)結(jié)構(gòu),具有

    2024年02月08日
    瀏覽(21)
  • java 堆(優(yōu)先級隊列)詳解

    java 堆(優(yōu)先級隊列)詳解

    如果有一個關(guān)鍵碼的集合K = {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉樹的順序存儲方式存儲 在一個一維數(shù)組中,并滿足:Ki = K2i+1 且 Ki= K2i+2 (Ki = K2i+1 且 Ki = K2i+2) i = 0,1,2…,則稱為 小堆(或大堆)。將根節(jié)點最大的堆叫做最大堆或大根堆,根節(jié)點最小的堆叫做最小

    2024年02月08日
    瀏覽(24)
  • 【數(shù)據(jù)結(jié)構(gòu)】優(yōu)先級隊列——堆

    【數(shù)據(jù)結(jié)構(gòu)】優(yōu)先級隊列——堆

    ??????????個人主頁?????????? ??????????數(shù)據(jù)結(jié)構(gòu)專欄?????????? ??????????【數(shù)據(jù)結(jié)構(gòu)】非線性結(jié)構(gòu)——二叉樹?????????? 前面介紹過隊列,隊列是一種先進(jìn)先出(FIFO)的數(shù)據(jù)結(jié)構(gòu),但有些情況下,操作的數(shù)據(jù)可能帶有優(yōu)先級,一般出隊列時,可能

    2024年04月14日
    瀏覽(21)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包