RabbitMQ第二种模型--workqueue
生活随笔
收集整理的這篇文章主要介紹了
RabbitMQ第二种模型--workqueue
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Work queues,也被稱為(Task queues),任務(wù)模型。奉行的是平均主義
讓多個消費者綁定到一個隊列,共同消費隊列中的消息。
隊列中的消息一旦消費,就會消失,因此任務(wù)是不會被重復(fù)執(zhí)行的。兩個消費者平分隊列中的消息
生產(chǎn)者
package com.zuoan.wrokqueue;import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.zuoan.utils.RabbitMQUtils;import java.io.IOException;/*** @Description: TODO* @Author: 黃石軍* @CreateTime: 2022/4/9 17:57* @Company:*/ public class Provider {public static void main(String[] args) throws IOException {//創(chuàng)建連接Connection connection = RabbitMQUtils.getConnection("192.168.128.100");//創(chuàng)建通道Channel channel = connection.createChannel();//通過channel聲明隊列//參數(shù)一:隊列名稱,參數(shù)二:是否持久化,參數(shù)三:是否獨占隊列,參數(shù)四:是否在消費完成后自動刪除隊列channel.queueDeclare("work",false,false,false,null);for (int i = 0; i < 20; i++) {//發(fā)布消息//參數(shù)一:交換機名稱,參數(shù)二:隊列名稱,參數(shù)三:消息額外屬性,參數(shù)四:消息內(nèi)容channel.basicPublish("","work",null,("hello workQueue" + i).getBytes());}//關(guān)閉資源RabbitMQUtils.closeChannelAndConnection(channel,connection);} }消費者1
package com.zuoan.wrokqueue;import com.rabbitmq.client.*; import com.zuoan.utils.RabbitMQUtils;import java.io.IOException;/*** @Description: TODO* @Author: 黃石軍* @CreateTime: 2022/4/9 18:09* @Company:*/ public class Consumer1 {public static void main(String[] args) throws IOException {Connection connection = RabbitMQUtils.getConnection("192.168.128.100");//創(chuàng)建連接通道Channel channel1 = connection.createChannel();//通道綁定對象channel1.queueDeclare("work",false,false,false,null);//消費消息//參數(shù)一:隊列名稱 參數(shù)二:開始消費時自動確認(rèn)機制 參數(shù)三:消費時的回調(diào)接口channel1.basicConsume("work",true,new DefaultConsumer(channel1){@Overridepublic void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("消費者-1 :"+ new String(body));}});} }消費者2
package com.zuoan.wrokqueue;import com.rabbitmq.client.*; import com.zuoan.utils.RabbitMQUtils;import java.io.IOException;/*** @Description: TODO* @Author: 黃石軍* @CreateTime: 2022/4/9 18:09* @Company:*/ public class Consumer2 {public static void main(String[] args) throws IOException {Connection connection = RabbitMQUtils.getConnection("192.168.128.100");//創(chuàng)建連接通道Channel channel2 = connection.createChannel();//通道綁定對象channel2.queueDeclare("work",false,false,false,null);//消費消息//參數(shù)一:隊列名稱 參數(shù)二:開始消費時自動確認(rèn)機制 參數(shù)三:消費時的回調(diào)接口channel2.basicConsume("work",true,new DefaultConsumer(channel2){@Overridepublic void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {System.out.println("消費者-1 :"+ new String(body));}});} }工具類在我博客分類MQ的第一章里需要的小伙伴請自取!
https://editor.csdn.net/md/?articleId=124064801
總結(jié)
以上是生活随笔為你收集整理的RabbitMQ第二种模型--workqueue的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL server 中的插入表行数据,
- 下一篇: 设计稿预览软件有哪些