rabbitmq使用总结

1、进入rabbitmq的sbin目录,进入CMD

2、输入./rabbitmq-plugins enable rabbitmq_management启用管理服务。

3、输入./rabbitmqctl start_app启动服务。

查看是否启动成功

1、浏览器访问http://localhost:15672/

下载erlang

地址如下:

http://erlang.org/download/otp_win64_20.3.exe

找到 otp_win64_20.3.exe,以管理员方式运行此文件,安装。

erlang安装完成需要配置erlang环境变量:

这两个都加入到系统盘中去

ERLANG_HOME=D:\Program Files\erl9.3

在path中添加%ERLANG_HOME%\bin;

2)安装RabbitMQ

https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.3

找到 rabbitmq-server-3.7.3.exe,以管理员方式运行此文件,安装。

 普通java 项目的依赖<dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>4.0.3</version></dependency>
TOPIC 模式 也就是路由模式  
p  提供了准确的路径
c  提供了大概得路径   来消费数据

Confirm 确认消息 用在 p -> ex 上面的 先连同 以后在上传数据,两上去发送失败就会触发这个机制

 channel.confirmSelect(); // 开启监听 可能不止一个管道channel.addConfirmListener(new ConfirmListener() {public void handleAck(long l, boolean b) throws IOException {System.out.println(l);System.out.println(b);System.out.println("确认获取...");}
​public void handleNack(long l, boolean b) throws IOException {System.out.println(l);System.out.println(b);System.out.println("未获取...");}});

retrun 消息机制

   // 执行失败的时候添加的返回数据  成的时候什么都不会 这里是它自己的bugchannel.addReturnListener(new ReturnListener() {public void handleReturn(int i, String s, String s1, String s2, AMQP.BasicProperties basicProperties, byte[] bytes) throws IOException {String str = new String(bytes, "UTF-8");System.out.println("没有路由成功的数:" + str);}});

消费端的限流

channel.basicQos(2); // 每次消费两条数据  限流策略关键代码
// 开启acKnowledge验证数据 读出数据单未消费掉
channel.basicConsume("myqosqu", false, consumer);

消费端的ACK与重回队列 (消费端)

// 手动消费 
channel.basicAck(envelope.getDeliveryTag(),false);// 两个参数 获取每一条消费的对象id  不配量处理
/
// 手动不消费  也不返回队列(false) true 是返回队列那就死循环了,一直在处理这条数据channel.basicNack(envelope.getDeliveryTag(),false,true);

有效时间 (p)

AMQP.BasicProperties properties = new AMQP.BasicProperties().builder().deliveryMode(2)// 设置消息是否持久化,1: 非持久化 2:持久化.contentEncoding("UTF-8").expiration("10000").build();
// p 端的数据 第三个参数来设置有效时间
hannel.basicPublish("myoneEx", "myoneAs", properties, smsMsg.getBytes());

死信队列

  Map<String, Object> param = new HashMap<String, Object>(); //创建一个死信队列 param.put("x-dead-letter-exchange", "mytwoEx");channel.exchangeDeclare("myoneEx", BuiltinExchangeType.DIRECT);
// 如果出现问题就放到第二交换机上面去(在队列上设置属性的)channel.queueDeclare("myoneQu", true, false, false, param);

springboot 的使用

 -- 相关依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>

这里是springboot一些注解,防止自己忘记,在此查阅了一些资料

@Bean不仅可以作用在方法上,也可以作用在注解类型上,在运行时提供注册。
​
value:name属性的别名,在不需要其他属性时使用,也就是说value 就是默认值
name:此bean 的名称,或多个名称,主要的bean的名称加别名。如果未指定,则bean的名称是带注解方法的名称。如果指定了,方法的名称就会忽略,如果没有其他属性声明的话,bean的名称和别名可能通过value属性配置
autowire :此注解的方法表示自动装配的类型,返回一个Autowire类型的枚举,我们来看一下Autowire枚举类型的概念

当使用在类上的时候,如下代码,@Qualifier注解里面填写的值就是当前类注入到IOC容器的bean的唯一标识(id),再使用到该Bean的地方就可以直接根据唯一标识(id)从IOC容器中获取了

当使用在属性上的时候,如下代码,@Qualifier 和 @Autowired结合使用可以通过唯一Bean的id实现自动装配,因为单独的@Autowired注解实现自动装配是按照类型优先原则的,一旦IOC容器中出现了两个类型一样的Bean,@Autowired注解就会无法辨别用那个,即而报错,但是当我们加上 @Qualifier(value = "Bean的id") 的时候就可以直接通过Bean的唯一标识(id)进行装配了。

@RabbitListener注解既可以加在类上,也可以加在方法上,其作用有所不同。

正如上面讲的,当@RabbitListener注解加在类上时,表示该类是一个RabbitMQ消息监听器容器,可以包含多个带有@RabbitHandler注解的方法,用于处理不同类型的消息。例如:

@RabbitListener(queues = MQConfig.PAYQUEUE)
public class MQListener{@RabbitHandler // 这里处理多个类型的数据public void revicePaySuccess(String orderNo){}
}

因此,@RabbitListener注解加在类上时,表示该类是一个消息监听器容器,可以包含多个处理不同类型消息的方法;而加在方法上时,表示该方法是一个消息监听器,只用于处理特定类型的消息。

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

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

相关文章

【C++入门(一)】:详解C++语言的发展及其重要性

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; C入门到进阶 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f324;️什么是C&#x1f324;️C的发展史&#x1f324;️C的重要性☁️语言的广泛度☁️C的领域⭐…

java在线票务系统(选座)Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java servlet 在线票务系统&#xff08;选座&#xff09;管理系统是一套完善的java web信息管理系统 系统采用serlvetdaobean&#xff08;mvc模式)&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要…

从方程到预测:数学在深度学习中的作用

图片来源 一、说明 深度学习通常被认为是人工智能的巅峰之作&#xff0c;它的成功很大程度上归功于数学&#xff0c;尤其是线性代数和微积分。本文将探讨深度学习与数学之间的深刻联系&#xff0c;阐明为什么数学概念是该领域的核心。 二、数学框架 从本质上讲&#xff0c;深度…

腾讯云轻量应用服务器性能差吗?

腾讯云轻量应用服务器性能如何&#xff1f;轻量服务器CPU采用什么型号&#xff1f;处理器计算性能如何&#xff1f;轻量应用服务器会不会比云服务器CVM性能差&#xff1f;腾讯云服务器网txyfwq.com详解轻量CPU型号主频、处理器性能、内存、公网带宽、月流量、不同地域速度测试、…

腾讯云价格计算器,一键计算精准报价,好用!

腾讯云价格计算器&#xff1a;可以计算腾讯云服务器不同CVM实例规格、CPU内存、公网带宽和系统盘费用明细表&#xff0c;可以一键计算出精准报价明细表&#xff0c;腾讯云服务器网txyfwq.com分享大家腾讯云服务器价格计算器入口链接、使用方法及限制说明&#xff1a; 腾讯云服…

【持续更新ing】uniapp+springboot实现个人备忘录系统【前后端分离】

目录 &#xff08;1&#xff09;项目可行性分析 &#xff08;2&#xff09;需求描述 &#xff08;3&#xff09;界面原型 &#xff08;4&#xff09;数据库设计 &#xff08;5&#xff09;后端工程 接下来我们使用uniappspringboot实现一个简单的前后端分离的小项目----个…

5天一更新的卫星影像数据来自哪里?

这里我们就来分享一下&#xff0c;5天一更新的卫星影像源来自哪里。 哥白尼计划 在开始讲卫星影像数据源时&#xff0c;我们先来了解一下什么是哥白尼计划。 哥白尼计划&#xff08;Copernicus Programme&#xff09;&#xff0c;又称全球环境与安全监测计划&#xff08;Glo…

HCIA-Datacom题库(自己整理分类的)——ARP协议【完】

一、单选 1.ARP 属于哪一层协议&#xff1f; 数据链路层 网络层 物理层 传输层 2.ARP请求是____发送的 点播 广播 组播 单播 关于ARP报文的说法错误的是? ARP请求报文是广播发送的 ARP报文不能被转发到其他广播域 ARP应答报文是单播方发送的 任何链路层协议都需…

【并发编程篇】解决线程安全问题 — CopyOnWriteArraySet

文章目录 &#x1f354;情景引入&#x1f33a;报错了&#xff0c;解决方法⭐方法一⭐方法二 &#x1f354;情景引入 我们看下面这段代码 运行后报错了 我们看看报错原因 报错原因是并发修改异常 &#x1f33a;报错了&#xff0c;解决方法 ⭐方法一 我们使用其他工具类&am…

【领域驱动设计】模式--通用语言(Ubiquitous language)

一.前言 有道无术术可求&#xff0c;有术无道止于术。方法论的形成都是为了让我们能够更高效&#xff0c;系统的解决问题&#xff0c;而不至于遇到问题不知所措。 二.通用语言的必要性 相信大家在实际的软件开发流程过程中&#xff0c;经常会遇到参照 Prd原型 编码出的系统与实…

骑砍战团MOD开发(27)-module_tableau_materials.py材质

一.配置材质资源 OpenBrf寻找对应材质资源. tableau配置材质资源 ("round_shield_1", 0, "sample_shield_round_1", 512, 256, 0, 0, 0, 0,[(store_script_param, ":banner_mesh", 1),(set_fixed_point_multiplier, 100),(init_position, pos1),…

NFC物联网智能购物车设计方案

智能购物车是综合利用计算机网络、射频识别技术、数据库技术、单片机于一体的设备具有先进性、便于管理性、经济性、普适性。基于NFC (Near Field Communication&#xff0c;近场通信)技术的智能购物车&#xff0c;能够大幅缩短结账排队时间&#xff0c;实现“无感支付”。NFC是…

【黑产攻防道04】利用pow工作量证明降低黑产的破解效率

上一期我们提到&#xff0c;黑产有三种常见的破解方式&#xff1a; 1.通过识别出验证码图片答案实现批量破解验证&#xff0c;即图片答案识别&#xff1b; 2.在了解通讯流程之后直接携带相关参数发请求&#xff0c;即协议破解&#xff1b; 3.使用各种客户端模拟器来模拟真人…

高校实验室安全管理视频监控系统设计:AI视频识别技术智能分析网关V4的应用

一、背景 实验室作为科研与教学的核心场所&#xff0c;其重要性不言而喻。高校实验室由于其开放性与多样性&#xff0c;安全管理尤为重要。高校实验室的安全管理&#xff0c;不仅是保障科研与教学质量的基础&#xff0c;更是校园安全的重要组成部分。一旦发生安全事故&#xf…

FPGA 底层资源介绍

Xilinx FPGA底层资源介绍 本文转载自&#xff1a;瓜大三哥微信公众号 XILINX FPGA 芯片整体架构如下所示&#xff0c;整个芯片是以BANK进行划分的&#xff0c;不同的工艺、器件速度和对应的时钟具有不同的BANK数量&#xff08;下面截图是以K7325tffg676为例&#xff09;&…

外汇天眼:仿冒OANDA安达──诓称分析师带领稳赚不赔,恶意爆仓再三骗入金

最近有考虑做美股、期货、外汇的投资人请注意&#xff0c;近期外汇天眼收到一位台湾投资人爆料&#xff0c;分享自己误用仿冒OANDA安达的假券商而损失新台币50万元&#xff0c;以下让我们一起了解这个诈骗案件的详细经过与手法。 今年7月底&#xff0c;受害者在社交平台IG上被…

解决Github无法上传>100M文件——只需两行代码

文章目录 合作推广&#xff0c;分享一个人工智能学习网站。计划系统性学习的同学可以了解下&#xff0c;点击助力博主脱贫( •̀ ω •́ )✧ 废话不多说&#xff0c;如果在githubpush文件太大时&#xff0c;会报错&#xff1a;this exceeds GitHub’s file size limit of 100.…

SLAM PnP问题以及相关基础知识

目标泛函 目标泛函是在优化问题中使用的一种数学工具&#xff0c;目标泛函是一个函数&#xff0c;它将一个或多个函数映射到一个实数。它常用于描述需要最小化或最大化的函数。在优化问题中&#xff0c;我们通常希望找到使得某个特定函数取得最大值或最小值的变量值。目标泛函…

喜讯|极狐GitLab 通过信通院汽车软件研发效能成熟度模型能力

12 月 27 日&#xff0c;在由中国信息通信研究院&#xff08;下称信通院&#xff09;、中国通信标准化协会联合主办的2023系统稳定性与精益软件工程大会-汽车云质效专场峰会上&#xff0c;信通院发布了“2023年下半年汽车云评估结果”&#xff0c;极狐GitLab 一体化 DevOps 平台…