亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

如何利用redis做消息隊列

小新
118
2020-12-28 18:35:30
欄目: 云計算

如何利用redis做消息隊列

利用redis做消息隊列的示例:

1.生產者模擬程序,代碼:

package scheduleTest;

import java.util.Random;

import java.util.UUID;

import redis.clients.jedis.Jedis;

/**

* 模擬一個生產者

*

Title: TaskProducer

*

Description:

*

Company:

* @author 夏 杰

* @date 2020年12月8日 下午4:26:48

* @vesion 1.0

*/

public class TaskProducer implements Runnable{

Jedis jedis = new Jedis("120.55.195.177",6379);

public void run() {

Random random = new Random();

while(true){

try{

Thread.sleep(random.nextInt(600) + 600);

// 模擬生成一個任務

UUID taskid = UUID.randomUUID();

//將任務插入任務隊列:task-queue

jedis.lpush("task-queue", taskid.toString());

System.out.println("插入了一個新的任務: " + taskid);

}catch(Exception e){

e.printStackTrace();

}

}

}

}

2.消費者模擬程序,代碼:

 

package scheduleTest;

import java.util.Random;

import redis.clients.jedis.Jedis;

/**

* 模擬消費者

*

Title: TaskConsumer

*

Description:

*

Company:

* @author 夏 杰

* @date 2015年12月11日 下午4:44:23

* @vesion 1.0

*/

public class TaskConsumer implements Runnable {

Jedis jedis = new Jedis("120.55.195.177",6379);

public void run() {

Random random = new Random();

while(true){

//從任務隊列"task-queue"中獲取一個任務,并將該任務放入暫存隊列"tmp-queue"

String taskid = jedis.rpoplpush("task-queue", "tmp-queue");

// 處理任務----純屬業務邏輯,模擬一下:睡覺

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

e.printStackTrace();

}

//模擬成功和失敗的偶然現象

if(random.nextInt(13) % 7 == 0){// 模擬失敗的情況,概率為2/13

//將本次處理失敗的任務從暫存隊列"tmp-queue"中,彈回任務隊列"task-queue"

jedis.rpoplpush("tmp-queue", "task-queue");

System.out.println(taskid + "處理失敗,被彈回任務隊列");

} else {// 模擬成功的情況

// 將本次任務從暫存隊列"tmp-queue"中清除

jedis.rpop("tmp-queue");

System.out.println(taskid+"處理成功,被清除");

}

}

}

}

3.調度主程序,代碼:

package scheduleTest;

/**

*

Title: TaskShedulerSystem

*

Description:

*

Company:

* @author 夏 杰

* @date 2015年12月11日 下午4:19:09

* @vesion 1.0

*/

public class TaskShedulerSystem {

public static void main(String[] args) throws Exception {

// 啟動一個生產者線程,模擬任務的產生

new Thread(new TaskProducer()).start();

Thread.sleep(15000);

//啟動一個線程者線程,模擬任務的處理

new Thread(new TaskConsumer()).start();

//主線程休眠

Thread.sleep(Long.MAX_VALUE);

}

}

0
高要市| 锡林浩特市| 枝江市| 乌鲁木齐县| 兴安县| 安平县| 察隅县| 梁山县| 筠连县| 闸北区| 来宾市| 原平市| 信丰县| 红原县| 吴忠市| 乌拉特后旗| 洞口县| 淮滨县| 赤壁市| 双峰县| 无为县| 商河县| 松原市| 徐汇区| 昔阳县| 海兴县| 察隅县| 社旗县| 吴忠市| 井研县| 宁安市| 达孜县| 伊金霍洛旗| 汾西县| 武宁县| 客服| 澄江县| 泰来县| 涪陵区| 万荣县| 于都县|