rabbitMQ对优先级队列的使用

注意事项:
1.队列设置优先级 权制范围(0-255)推荐0-10 否则浪费CPU与内存
2.发消息时给消息设置优先级
3.消息需要完全事先在队列中,在被消费者消费 会被排序,否则边生产边消费不会达到预期的队列优先效果。

优先级队列:
0-255越大越优先
推荐:0-10 CPU性能友好

在这里插入图片描述
先生产者生产消息:

package com.esint.rabbitmq.work07;import com.esint.rabbitmq.RabbitMQUtils;
import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.Channel;import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;public class Producer {public static final String QUEUE_NAME = "hello";public static void main(String[] args) throws Exception {Channel channel = RabbitMQUtils.getChannel();Map<String, Object> arguments = new HashMap<>();//队列设置优先即参数范围arguments.put("x-max-priority",10);//官方允许0-255 此处设置10 允许优先级范围 0-10  不设置过大 浪费CPU和内存channel.queueDeclare(QUEUE_NAME,false,false,false,arguments);//注意上面要求的 需要事先 发送完毕消息  才能体显现优先级的消息优化排序for (int i = 0; i < 10; i++) {String message = "msssage" + i;if(i == 3 ){//本实验的核心操作再次 在这里构建优先级设置参数 设置这个优先级的值需要在前面设置对立参数范围内AMQP.BasicProperties properties = new AMQP.BasicProperties().builder().priority(5).build();channel.basicPublish("",QUEUE_NAME,properties,message.getBytes(StandardCharsets.UTF_8));}else{channel.basicPublish("",QUEUE_NAME,null,message.getBytes(StandardCharsets.UTF_8));}}}
}

消费者消费消息:

package com.esint.rabbitmq.work07;import com.esint.rabbitmq.RabbitMQUtils;
import com.rabbitmq.client.CancelCallback;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.DeliverCallback;
import com.rabbitmq.client.Delivery;public class Comsumer {public static final String QUEUE_NAME = "hello";public static void main(String[] args) throws Exception {Channel channel = RabbitMQUtils.getChannel();DeliverCallback deliverCallback = ( consumerTag, message)->{System.out.println(new String(message.getBody(),"UTF-8"));};CancelCallback cancelCallback = (consumerTag)->{};channel.basicConsume(QUEUE_NAME,true,deliverCallback,cancelCallback);}
}

用到的工具类:

package com.esint.rabbitmq;import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;public class RabbitMQUtils {public static Channel getChannel()throws Exception{//创建链接工厂ConnectionFactory connectionFactory = new ConnectionFactory();//设置链接connectionFactory.setHost("192.168.43.37");connectionFactory.setUsername("admin");connectionFactory.setPassword("admin");//链接工厂创建链接Connection connection = connectionFactory.newConnection();//获取信道Channel channel = connection.createChannel();return channel;}public static final void Sleep(int nums)  {try {Thread.sleep(nums * 1000);}catch (InterruptedException _ignored){Thread.currentThread().interrupt();}}
}

产生的结果:

Connected to the target VM, address: '127.0.0.1:59793', transport: 'socket'
msssage3
msssage0
msssage1
msssage2
msssage4
msssage5
msssage6
msssage7
msssage8
msssage9

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/228466.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【EI会议征稿】第三届航空航天工程与系统国际研讨会(ISAES 2024)

第三届航空航天工程与系统国际研讨会(ISAES 2024) 2024 3rd International Symposium on Aerospace Engineering and Systems 第三届航空航天工程与系统国际研讨会将于2024年3月22-24日在南京召开&#xff01;会议紧密聚焦“航空航天工程”领域的热点和难点问题&#xff0c;…

MVVM 模式与 MVC 模式:构建高效应用的选择

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

sping boot的配置文件application.properties乱码

1.问题描述 查看spingboot项目中的配置信息&#xff0c;即查看application.properties文件&#xff0c;它出现乱码 2.解决问题 File->Settings->Editor->File Encodings 3.验证是否解决乱码

基于U2-Net如何训练一个一键抠图模型

1. 前言 抠图是图像编辑的基础功能之一&#xff0c;在抠图的基础上可以发展出很多有意思的玩法和特效。比如一键更换背景、一键任务卡通化、一键人物素描化等。正是因为这些有意思的玩法。 最近也是对此模型背后的网络很感兴趣&#xff0c;收集数据训练了人脸素描化模型&…

MySQL基础进阶篇

进阶篇 存储引擎 MySQL体系结构&#xff1a; 存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表而不是基于库的&#xff0c;所以存储引擎也可以被称为表引擎。 默认存储引擎是InnoDB。 相关操作&#xff1a; -- 查询建表语句 show create …

鸿蒙4.0开发笔记之ArkTS语法基础的UI描述、基础组件的使用与如何查看组件是否有参数(八)

文章目录 一、声明式UI描述1、无/有参数组件2、如何查看组件是否有参数 二、Image组件的使用三、组件的属性设置四、补充1、使用组件的成员函数配置组件的事件方法2、配置子组件3、多组件嵌套 一、声明式UI描述 在HarmonyOS的ArkTS语法中&#xff0c;万物皆组件。ArkTS以声明方…

多个nginx共享值、缓存问题

背景 目前我在集成登录认证功能&#xff08;cas&#xff09;&#xff0c;使用的架构是nginxlua&#xff0c;由于我们有多个系统&#xff08;全是前端项目&#xff09;&#xff0c;每套系统都采用nginxlua的方式进行部署&#xff08;即每个系统都是一个nginx&#xff09;&#…

【2023.11.28】关于Servlet路径的学习

创建Servlet 这是Tomcat配置的初始路径&#xff0c;在web项目内&#xff0c;该路径代表了webapp下index.html所在的页面。 WebServlet(name "login", value "/login",loadOnStartup 1) public class LoginServlet extends HttpServlet { 使用注解的方…

Spring Cloud 版本升级记:OpenFeignClient与Gateway的爱恨交织

Spring Cloud 版本升级记&#xff1a;OpenFeignClient与Gateway的爱恨交织 近日&#xff0c;在负责的项目中&#xff0c;我对 Spring Boot、Spring Cloud 以及 Spring Cloud Alibaba 进行了版本升级。原以为会一切顺利&#xff0c;没想到却遭遇了 Spring Cloud Gateway 无法正…

Apache Airflow (十四) :Airflow分布式集群搭建及测试

&#x1f3e1; 个人主页&#xff1a;IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 &#x1f6a9; 私聊博主&#xff1a;加入大数据技术讨论群聊&#xff0c;获取更多大数据资料。 &#x1f514; 博主个人B栈地址&#xff1a;豹哥教你大数据的个人空间-豹…

LeetCode算法题解(动态规划)|LeetCode198. 打家劫舍、LeetCode213. 打家劫舍 II、LeetCode337. 打家劫舍 III

一、LeetCode198. 打家劫舍 题目链接&#xff1a;198. 打家劫舍 题目描述&#xff1a; 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的…

java多线程-扩展知识三:乐观锁与悲观锁

1、悲观锁 悲观锁有点像是一位比较悲观&#xff08;也可以说是未雨绸缪&#xff09;的人&#xff0c;总是会假设最坏的情况&#xff0c;避免出现问题。 悲观锁总是假设最坏的情况&#xff0c;认为共享资源每次被访问的时候就会出现问题(比如共享数据被修改)&#xff0c;所以每次…