RabbitMQ的工作模式——WorkQueues

news2024/11/19 15:37:47

1.工作队列模式

在这里插入图片描述
在这里插入图片描述

生产者代码

public class Producer_WorkQueues1 {
	public static void main(String[] args) throws IOException, TimeoutException {
		//1.创建连接工厂
		ConnectionFactory factory = new ConnectionFactory();
		//2.设置参数
		factory.setHost("172.16.98.133"); ip 默认值 localhost
		factory.setPort(5672);//端口 默认值5672
		factory.setVirtualHost("/itcast");//虚拟机 默认值
		factory.setUsername("heima");//用户名 默认guest
		factory.setPassword("heima");//密码 默认值 guest
		//3.创建连接 Connection
		Connection connection = factory.newConnection();
		//4.创建Channel
		Channel channel = connection.creatChannel();
		//5.创建队列Queue
		/*
		queueDeclare(String queue,boolean durable,boolean exclusive,boolean autoDelete,Map<String,Object> arguments
		参数:
			1.queue:队列名称
			2.durable:是否持久化,当mq重启之后,还在
			3.exclusive:
				是否独占,只能有一个消费者监听这队列
				当Connection关闭时,是否删除队列
			4.autoDelete:是否自动删除。当没有Consumer时,自动删除掉
			5.arguments:参数。
		*/
		//如果没有一个名字叫hello_world的队列,则会创建该队列,如果有则不会创建
		channel.queueDeclare("work_queues",true,false,false,null);
		/*
			basicPublish(String exchange,String routingKey,BasicProperties props, byte[] body)
			参数:
			1.exchange:交换机名称。简单模式下交换机默认使用的“”
			2.routingKey:路由名称
			3.props:配置信息
			4.body: 发送消息数据
		*/
		for(int i = 1; i<=10;i++){
			String body = i + "hello rabbitmq~~~";
			//发送消息
			channel.basicPublish("","work_queues",null,body.getBytes());
		}
		//7.释放资源
		channel.close();
		connection.close();
	}
}

消费之代码

public class Consumer_WrokQueues1 {
	public static void main(String[] args) throws IOException, TimeoutException {
		//1.创建连接工厂
		ConnectionFactory factory = new ConnectionFactory();
		//2.设置参数
		factory.setHost("172.16.98.133"); ip 默认值 localhost
		factory.setPort(5672);//端口 默认值5672
		factory.setVirtualHost("/itcast");//虚拟机 默认值
		factory.setUsername("heima");//用户名 默认guest
		factory.setPassword("heima");//密码 默认值 guest
		//3.创建连接 Connection
		Connection connection = factory.newConnection();
		//4.创建Channel
		Channel channel = connection.creatChannel();
		//5.创建队列Queue
		/*
		queueDeclare(String queue,boolean durable,boolean exclusive,boolean autoDelete,Map<String,Object> arguments
		参数:
			1.queue:队列名称
			2.durable:是否持久化,当mq重启之后,还在
			3.exclusive:
				是否独占,只能有一个消费者监听这队列
				当Connection关闭时,是否删除队列
			4.autoDelete:是否自动删除。当没有Consumer时,自动删除掉
			5.arguments:参数。
		*/
		//如果没有一个名字叫hello_world的队列,则会创建该队列,如果有则不会创建
		channel.queueDeclare("work_queues",true,false,false,null);
		/*
			basicConsume(String queue,boolean autoAck,Consumer callback)
			参数:
			1.queue:队列名称
			2.autoAck:是否自动确认
			3.callback:回调对象
		*/
		//接收消息
		Consumer consumer = new DefaultConsumer(channel){
			/*
				回调方法,当收到消息后会自动执行该方法
				1.consumerTag:标识
				2.envelope:获取一些信息,交换机,路由key...
				3.properties:配置信息
				4.body:数据
			*/
			@Override
			public void handleDelivery(String consumerTag,Envelope envelope,AMQP.BasicProperties properties,byte[] body){
				System.out.println("consumerTag" + consumerTag);
				System.out.println("Exchange" + envelope.getExchange());
				System.out.println("RoutingKey" + envelope.getRoutingKey());
				System.out.println("properties" + properties);
				System.out.println("body" + new String(body));
			}
		};
		channel.basicConsume("work_queues",true,consumer);

		//消费者不能关闭资源
	}
}

启动连个消费者从同一个生产者里面争抢消息。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Android+OpenCV+CNN+Keras的智能手语数字实时翻译——深度学习算法应用(含Python、ipynb工程源码)+数据集(一)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境TensorFlow环境Keras环境Android环境1. 安装AndroidStudio2. 导入TensorFlow的jar包和so库3. 导入OpenCV库 相关其它博客工程源代码下载其它资料下载 前言 本项目依赖于Keras深度学习模型&#xff0c;旨在对手语…

idea更改java项目名

做了一个普通的java项目&#xff08;使用socket进行网络通信的练手项目&#xff09;&#xff0c;需要更改项目名&#xff0c;更改过程记录在这里。 修改项目名可能会出现很多错误&#xff0c;建议先备份当前项目 1.在idea里&#xff0c;右键项目名——》选择Refactor——》选择…

服务注册发现_搭建单机Eureka注册中心

创建cloud-eureka-server7001模块 pom添加依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&quo…

Xshell工具连接本地虚拟机Linux系统

你知道的越多&#xff0c;你不知道的越多&#xff1b;本文仅做记录&#xff0c;方便以后备阅。希望也能帮到正在看这篇文章的你。 使用Xshell工具连接Linux系统具有方便&#xff0c;易于操作等诸多特点。对于Xshell的介绍&#xff0c;我就不详细说了。我相信百度百科上的介绍更…

RabbitMQ工作模式——PubSub生产者及消费者

PubSub模式生产者代码 public class Producer_PubSub {public static void main(String[] args) throws IOException, TimeoutException {//1.创建连接工厂ConnectionFactory factory new ConnectionFactory();//2.设置参数factory.setHost("172.16.98.133"); ip 默…

SAP PO运维(四):适配器消息监控

登录SAP PO系统,点击“Configuration and Monitoring Home”,使用PISUPER账号登录: 2、选择“适配器引擎->消息监控器”: 3、查看是否有报错消息: 双击报错的数字,筛选出报错的条目(可以根据状态、接口命名空间等来筛选):常见的报错消息有: 接口配置问题:字段为空值…

java框架-Springboot3-场景整合

文章目录 java框架-Springboot3-场景整合批量安装中间件NoSQL整合步骤RedisTemplate定制化 接口文档远程调用WebClientHttp Interface 消息服务 java框架-Springboot3-场景整合 批量安装中间件 linux安装中间件视频 NoSQL 整合redis视频 整合步骤 RedisTemplate定制化 Re…

Qt5开发及实例V2.0-第十八章-Qt-MyselfQQ实例

Qt5开发及实例V2.0-第十八章-Qt-MyselfQQ实例 第18章-Qt MyselfQQ18.1 概述18.2 、发送文件18.3 、接收文件18.4 、保证传输的安全和稳定18.5 、总结 本章相关例程源码下载1.Qt5开发及实例_CH1801.rar 下载 第18章-Qt MyselfQQ 18.1 概述 MyselfQQ是一个基于Qt5框架开发的轻量…

技术学习群-第三周内容共享

本周为技术群聊的第三周&#xff0c;看看本周&#xff0c;都聊了些啥。 探讨u2以及appium 什么是u2&#xff1f;也就是uiautomator2&#xff0c;主要探讨的是uiautomator2与appium哪个更好用。 为什么探讨&#xff1f;他们拿来干什么的&#xff1f; 都是可以拿来做app自动化的&…

基于springboot+vue的毕业生实习与就业管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

C语言之字符函数字符串函数篇(1)

目录 前言 求字符串长度 strlen strlen统计的是字符串\0之前的字符串长度 字符指针 strlen的返回值是无符号整型 strlen的三种模拟实现 计数器 函数递归 指针_指针 长度不受限制的字符串函数 strcpy strcpy会将源字符串中的 \0 拷贝到目标空间 strcpy参数目标空…

cocos2dx查看版本号的方法

打开文件&#xff1a;项目根目录\frameworks\cocos2d-x\docs\RELEASE_NOTES.md 知道引擎版本号的意义&#xff1a; 1.面试中经常被问到(面试官想知道你会不会查版本号&#xff0c;你会查也不一定会去看&#xff0c;如果你去看了说明你是一个有心人&#xff0c;或者想深入研究下…

Innodb 原理和日志

一、MySQL结构 客户端 server层 查询缓存&#xff08;5.7&#xff09; 连接器 分析器 优化器 执行器 引擎层 二、一条update操作mysql的流程 三、MySQL的日志 &#xff08;1&#xff09;redo log 保证MySQL 持久性的关键&#xff0c;如果MySQL宕机&#xff0c;buffer pool…

Jupyter 报错:can‘t convert np.ndarray of type numpy.object_.

can’t convert np.ndarray of type numpy.object_. The only supported types are: float64, float32, float16, complex64, complex128, int64, int32, int16, int8, uint8, and bool. 解决方案&#xff1a;使用.astype(“float64”)强制转化

软件测试人员必须知道的接口测试基础

一、首先&#xff0c;什么是接口呢&#xff1f; 接口一般来说有两种&#xff0c;一种是程序内部的接口&#xff0c;一种是系统对外的接口。系统对外的接口&#xff1a;比如你要从别的网站或服务器上获取资源或信息&#xff0c;别人肯定不会把数据库共享给你&#xff0c;他只能…

[项目管理-34]:项目经理在强矩阵与弱矩阵管理中不同的作用

目录 一、项目管理与模式 1.1 项目管理 1.2 项目管理模式 1.3 项目管理的矩阵结构 二、项目管理不同矩阵结构的比较 2.1 职能型、项目型、矩阵型 2.2 弱矩阵、强矩阵、平衡矩阵 2.3 不同矩阵对项目经理的能力要求 一、项目管理与模式 1.1 项目管理 项目管理是在特定的…

一个关于 i++ 和 ++i 的面试题打趴了所有人

前言 都说大城市现在不好找工作&#xff0c;可小城市却也不好招人。 我们公司招了挺久都没招到&#xff0c;主管感到有些心累。 我提了点建议&#xff0c;是不是面试问的太深了&#xff0c;在这种小城市&#xff0c;能干活就行。 他说自己问的面试题都很浅显&#xff0c;如果答…

Learn Prompt- Midjourney 图片生成:基本设置和预设

/settings指令为模型版本、样式值、质量值和升级器版本等常用选项提供切换按钮。 备注 添加到提示末尾的参数将覆盖/settings中的设置。 模型版本​ 1️⃣ MJ Version 12️⃣ MJ Version 23️⃣ MJ Version 34️⃣ MJ Version 45️⃣ MJ Version 5&#x1f308; Niji Mode&a…

虚拟机如何连接MobaXterm

MobaXterm是一款增强型远程连接工具&#xff0c;Xshell相似。可以与虚拟机连接&#xff0c;从而在Windows界面下对其进行相关操作&#xff0c;使用非常的便捷 1.下载vmware并且在上面安装虚拟机任意版本。这里我安装的是centos7&#xff08;2009&#xff09; 2.打开终端 输入命…