RabbitMQ-hello

0. 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="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.hong.rabbitmq</groupId><artifactId>rabbitmq-hello</artifactId><version>1.0-SNAPSHOT</version><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.0</version><configuration><encoding>utf-8</encoding><source>1.8</source><target>1.8</target></configuration></plugin></plugins></build><dependencies><dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.8.0</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version></dependency></dependencies>
</project>

1. 生产者代码

package com.hong.rabbitmq1;import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;public class Producer {//队列名称private static final String QUEUE_NAME = "hello";public static void main(String[] args) throws Exception{ConnectionFactory factory = new ConnectionFactory();factory.setHost("10.211.55.4");factory.setUsername("admin");factory.setPassword("123456");Connection connection = factory.newConnection();Channel channel = connection.createChannel();/*** 声明消息队列* 第一个参数: 队列名称* 第二个参数: 是否持久化     false不持久化,rabbitmq重启队列丢失  true持久化,rabbitmq重启队列不丢失* 第三个参数: 是否排外       false排外只能一个消费者消费         false不排外可多消费者消费* 第四个参数: 是否自动删除   true自动删除最后一个消费者断开连接后该队列自动删除   false不自动删除* 第五个参数: 其他参数信息*/channel.queueDeclare(QUEUE_NAME,false,false,false,null);String message = "HELLO RABBITMQ!";/*** 发布消息* 第一个参数:要将消息发送到哪个交换机* 第二个参数:路由的 key 是哪个* 第三个参数:其他参数信息* 第四个参数:消息的消息体*/channel.basicPublish("",QUEUE_NAME,null,message.getBytes());System.out.println("消息发送完成!");}}

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

2.消费者代码

package com.hong.rabbitmq1;import com.rabbitmq.client.*;public class Consumer {private static final String QUEUE_NAME = "hello";public static void main(String[] args) throws Exception{ConnectionFactory factory = new ConnectionFactory();factory.setHost("10.211.55.4");factory.setUsername("admin");factory.setPassword("123456");Connection connection = factory.newConnection();Channel channel = connection.createChannel();DeliverCallback deliverCallback = (comsumerTag,message) -> System.out.println(new String(message.getBody()));CancelCallback cancelCallback = var -> System.out.println(var + "消息消费被中断!");/*** 消息消费* 第一个参数: 消费哪个队列* 第二个参数: 是否自动确认消息* 第三个参数: 当一个消息发送过来后的回调接口* 第四个参数: 当一个消费者取消订阅时的回调接口;取消消费者订阅队列时除了使用{@link Channel#basicCancel}之外的所有方式都会调用该回调方法*/channel.basicConsume(QUEUE_NAME,true,deliverCallback,cancelCallback);}
}

在这里插入图片描述

3.抽取工具类

package com.hong.utils;import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;/*** RabbitMQ创建Channel工具类*/
public class RabbitMQUtil {public static Channel getChannel() throws Exception{ConnectionFactory factory = new ConnectionFactory();factory.setHost("10.211.55.4");factory.setUsername("admin");factory.setPassword("123456");Connection connection = factory.newConnection();Channel channel = connection.createChannel();return channel;}
}

4.工作队列

4.1.生产者代码

package com.hong.rabbitmq2;import com.hong.utils.RabbitMQUtil;
import com.rabbitmq.client.Channel;import java.util.Scanner;public class Task {//队列名称private static final String QUEUE_NAME = "hello";public static void main(String[] args) throws Exception{Channel channel = RabbitMQUtil.getChannel();channel.queueDeclare(QUEUE_NAME,false,false,false,null);Scanner scanner = new Scanner(System.in);System.out.println("请输入:");while (scanner.hasNext()){String message = scanner.next();channel.basicPublish("",QUEUE_NAME,null,message.getBytes());System.out.println("消息发送完成------" + message);}}
}

4.2.消费者代码

package com.hong.rabbitmq2;import com.hong.utils.RabbitMQUtil;
import com.rabbitmq.client.CancelCallback;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.DeliverCallback;public class Worker {private static final String QUEUE_NAME = "hello";public static void main(String[] args) throws Exception{Channel channel = RabbitMQUtil.getChannel();DeliverCallback deliverCallback = (comsumerTag, message) -> System.out.println("接收到的消息:"+  new String(message.getBody()));CancelCallback cancelCallback = var -> System.out.println(var + "消息消费被中断!");System.out.println("worker1等待接收消息");channel.basicConsume(QUEUE_NAME,true,deliverCallback,cancelCallback);}
}

4.3.说明

在这里插入图片描述
Worker启动2个worker1,worker2;两者依次消费消息(轮训/轮询)

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

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

相关文章

数据在内存中的存储(浮点型篇)

1.例子&#xff1a;5.5&#xff1a;内存存储为101.1&#xff0c;十分位百分位依次为2的-1次方&#xff0c;2的-2次方&#xff0c;而使用科学计数法可以改写为1.011*2的2次方 2.国际标准公式&#xff1a;-1的D次方*M*2的E次方&#xff0c;x1负0正 3.M在存储时默认整数部分为1&…

恢复出厂设置后在 Android 上恢复照片的 6 种常用方法

恢复出厂设置可帮助您删除电子设备的所有信息并将其恢复到原始系统状态。但是&#xff0c;如果您不小心按下了恢复出厂设置按钮并从 Android 设备中删除了所有难忘的照片&#xff0c;该怎么办&#xff1f;好吧&#xff0c;您无需担心&#xff0c;因为可以通过以下一些方法来恢复…

助力工业生产质检,基于轻量级yolov5-seg开发构建工业场景下滚珠丝杠传动表面缺陷分割检测系统

AI赋能工业生产是一个强有力的方式&#xff0c;在我们之前的系列博文中也有很多相应的开发实践&#xff0c;感兴趣的胡都可以自行移步阅读&#xff0c;本文的核心思想就是想要基于轻量级的实例分割模型来开发构建工业场景下的滚珠丝杠传动表面缺陷分割检测系统&#xff0c;首先…

RT-DETR算法优化改进:轻量化自研设计双卷积重新设计backbone和neck,完成涨点且计算量和参数量显著下降

💡💡💡本文自研创新改进:双卷积由组卷积和异构卷积组成,执行 33 和 11 卷积运算代替其他卷积核仅执行 11 卷积,YOLOv8 Conv,从而轻量化RT-DETR,性能如下表,GFLOPs 8.1降低至7.6,参数量6.3MB降低至5.8MB RT-DETR魔术师专栏介绍: https://blog.csdn.net/m0_637742…

迷你型洗衣机好用吗?口碑好的四款小型洗衣机推荐

随着人们的生活水平的提升&#xff0c;越来越多小伙伴来开始追求更高的生活水平&#xff0c;一些智能化的小家电就被发明出来&#xff0c;而且内衣洗衣机是其中一个。现在通过内衣裤感染到细菌真的是越来越多&#xff0c;所以我们对内衣裤的清洗频次会高于普通衣服&#xff0c;…

搞定课件录制,新手必备指南!

“有人知道课件怎么录制吗&#xff1f;学校要求我们师范专业的学生出去实习&#xff0c;现在需要录制一个课件视频&#xff0c;以便在课堂上播放&#xff0c;可是我不会录制教学视频&#xff0c;真的很头疼&#xff0c;有人能帮帮我吗。” 随着在线教育的崛起&#xff0c;课件…

治疗复发或难治性多发性骨髓瘤:2期MagnetisM-3试验结果

今天给同学们分享一篇实验文章“Elranatamab in relapsed or refractory multiple myeloma: phase 2 MagnetisMM-3 trial results”&#xff0c;这篇文章发表在Nat Med期刊上&#xff0c;影响因子为82.9。 结果解读&#xff1a; 试验设计和患者 MagnetisMM-3是一项正在进行的…

Axure电商产品移动端交互原型,移动端高保真Axure原型图(RP源文件手机app界面UI设计模板)

本作品是一套 Axure8 高保真移动端电商APP产品原型模板&#xff0c;包含了用户中心、会员成长、优惠券、积分、互动社区、运营推广、内容推荐、商品展示、订单流程、订单管理、售后及服务等完整的电商体系功能架构和业务流程。 本模板由一百三十多个界面上千个交互元件及事件组…

基于OpenCV+CNN+IOT+微信小程序智能果实采摘指导系统——深度学习算法应用(含python、JS工程源码)+数据集+模型(五)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境TensorFlow 环境Jupyter Notebook环境Pycharm 环境微信开发者工具OneNET云平台 模块实现1. 数据预处理2. 创建模型并编译3. 模型训练及保存4. 上传结果5. 小程序开发1&#xff09;查询图片2&#xff09;查询识别结…

C# OpenCvSharp DNN 部署FastestDet

目录 效果 模型信息 项目 代码 下载 C# OpenCvSharp DNN 部署FastestDet 效果 模型信息 Inputs ------------------------- name&#xff1a;input.1 tensor&#xff1a;Float[1, 3, 512, 512] --------------------------------------------------------------- Outpu…

【Java SE】带你识别什么叫做异常!!!

&#x1f339;&#x1f339;&#x1f339;个人主页&#x1f339;&#x1f339;&#x1f339; 【&#x1f339;&#x1f339;&#x1f339;Java SE 专栏&#x1f339;&#x1f339;&#x1f339;】 &#x1f339;&#x1f339;&#x1f339;上一篇文章&#xff1a;【Java SE】带…

生态系统NPP及碳源碳汇模拟、CASA模型数据制备、土地利用变化、未来气候变化、空间动态模拟

目录 一、CASA模型介绍 二、CASA初步操作 三、CASA数据制备 四、土地利用变化下的CASA模拟 五、气候变化下的CASA模拟 六、基于CASA模型的碳源碳汇模拟 七、CASA案例分析 更多应用 碳中和可以从碳排放&#xff08;碳源&#xff09;和碳固定&#xff08;碳汇&#xff09…