JAVA发送消息到RabbitMq
项目中,作为生产者自定义消息发送到RabbitMq。
1.引入rmq依赖
<!-- rabbitmq 依赖 --><dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.9.0</version></dependency>
2.创建链接、断开连接工具类。
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import java.io.IOException;
import java.util.concurrent.TimeoutException;/*** RabbitMq 工具类** @author Klay* @date 2023/6/25*/
public class RabbitmqUtils {private static Channel channel = null;private static Connection connection = null;/*** 获取连接** @author Klay* @date 2023/6/25 10:37*/public static Channel getChannel() {//定义连接池ConnectionFactory factory = new ConnectionFactory();//设置主机地址factory.setHost("127.0.0.1");//设置端口factory.setPort(5672);//设置用户名factory.setUsername("guest");//密码factory.setPassword("guest");//虚拟机路径factory.setVirtualHost("/");try {connection = factory.newConnection();//创建信道channel = connection.createChannel();} catch (IOException e) {e.printStackTrace();} catch (TimeoutException e) {e.printStackTrace();}return channel;}/*** 关闭连接** @author Klay* @date 2023/6/25 10:37*/public static void closeConnection() {try {channel.close();connection.close();} catch (IOException e) {e.printStackTrace();} catch (TimeoutException e) {e.printStackTrace();}}
}
3.发送消息。大部分业务应用场景中,只需要发送消息到指定的交换机(exchange)中。如果业务需要创建交换机,则将注释的代码打开,创建交换机、队列,并绑定。发送消息时,将对应的交换机、路由进行替换即可。
import com.hikvision.ardatatormq.utils.RabbitmqUtils;
import com.rabbitmq.client.Channel;
import lombok.extern.slf4j.Slf4j;
import java.io.IOException;/*** @author Klay* @date 2023/10/16 016*/
@Slf4j
public class SendMessageTest {public static void main(String[] args){//利用写好工具类获取信道连接Channel channel = RabbitmqUtils.getChannel();try {/***创建一个交换机*1.交换机名称*2.交换机类型有fanout,direct,topic,headers*3.是否持久化*4.设置是自动删除,当没有队列与当前交换机绑定时自动删除*5.设置是否内置,表示内置的交换机*6.设置其他的一些结构化参数*/
// channel.exchangeDeclare("text_pubsub", BuiltinExchangeType.FANOUT, false, false, false, null);/***1.队列名称*2.是否持久化,持久化会存盘,重启也还存在*3.exclusive 是否排他如果一个队列被声明为排他的队列,该队列仅对首次声明它的连接可见,并在连接断开时自动删除这里需要注意三点:排他的队列是基于连接(Connection)可见的,同一个连接的不同信道(Channel)是可以同时访问同一连接创建的排他队列;“首次”是指如果一个连接已经声明了一个排他队列,其它连接是不允许建立同名的排他队列的,这个与普通队列不同;即使该队列是持久化的,一旦连接关闭或者客户端退出,该排他队列都会被自动删除,这种队列适用于一个客户端同时发送和读取消息的应用场景。*4.是否自动删除至少有一个消费者连接到这个队列,之后所有与这个队列连接的消费者都断开时,才会自动删除*5.设置队列的其他配置参数*/
// channel.queueDeclare("pubsub_queue1", false, false, false, null);/***将交换机与队列绑定*1.队列名称*2.交换机名称*3.routerkey(路由key)*4.其他的绑定参数*/
// channel.queueBind("pubsub_queue1", "text_pubsub", "routingKeyTest");/***发送消息*1.交换机名称*2.routerkey路由key,目前没有指定双引号即可*3.无额外配置写null*4.消息体*/String msg = "发布订阅模式!!!";channel.basicPublish("amq.topic", "routingKeyTest", null, msg.getBytes());log.info("消息发送成功!:{}", msg);} catch (IOException e) {log.error("发送消息IOException:{}", e);} finally {//关闭连接RabbitmqUtils.closeConnection();}}
}
4.进行测试。
4.1为交换机amq.topic创建一个测试队列并绑定。


4.2发送消息

相关文章:
JAVA发送消息到RabbitMq
项目中,作为生产者自定义消息发送到RabbitMq。 1.引入rmq依赖 <!-- rabbitmq 依赖 --><dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.9.0</version></dependen…...
Python 函数(lambda 匿名函数、自定义函数、装饰器)基本使用指南
Python 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段 lambda 匿名函数 对于单行函数,使用 lambda 表达式可以省去定义函数的过程,让代码更加简洁; 对于不需要多次复用的函数&a…...
第五届芜湖机器人展,正运动助力智能装备“更快更准”更智能!
■展会名称: 第十一届中国(芜湖)科普产品博览交易会-第五届机器人展 ■展会日期 2023年10月21日-23日 ■展馆地点 中国ㆍ芜湖宜居国际博览中心B馆 ■展位号 B029 正运动技术,作为国内领先的运动控制企业,将于2023年10月21日参加芜湖机…...
JVM八股文
1.JVM的内存结构? 2.OOM是什么,怎么排查? 3.请解释四种引用是什么意思有什么区别? 4.GC的回收算法有哪些? 5.怎么判断对象是否存活? 1.什么是JVM内存结构 jvm将虚拟机分为5大区域,程序计数器、…...
代码随想录算法训练营第二十四天丨 回溯算法part02
216.组合总和III 思路 本题就是在 [1,2,3,4,5,6,7,8,9] 这个集合中找到和为n的k个数的组合。 相对于77. 组合 (opens new window),无非就是多了一个限制,本题是要找到和为n的k个数的组合,而整个集合已经是固定的了[1,...,9]。 本题k相当于…...
【Python机器学习】零基础掌握AgglomerativeClustering聚类
如何解决城市规划问题? 城市规划者们面临一个复杂问题:如何合理地规划土地,使商业、居民、公园和其他设施互相便利,同时又不互相干扰?解决这个问题不仅需要对土地进行精准的分类,还要考虑到土地之间的相互关系。 借助层次聚类算法(Agglomerative Clustering),规划者…...
uniapp小程序中给web-view页面添加授权弹窗(使用cover-view组件覆盖实现该功能)
效果图: web-view是承载网页的容器。会自动铺满整个小程序页面,个人类型的小程序暂不支持使用。 再看下面一个提示: 每个页面只能有一个 web-view,web-view 会自动铺满整个页面,并覆盖其他组件。 也就是说,…...
2023年全球及中国CGT CDMO市场发展现状分析:CGT 渗透率有效助力CGT CDMO快速发展[图]
与传统药物相比,CGT的外包服务更注重活体开发过程,如质粒、病毒、细胞的生产及纯化。标准化、规模化的工艺流程对最终制备的产品起到重要影响,是获取及制备能够满足临床需求的高质量CGT产品的关键。 CGT CDMO服务内容 资料来源:共…...
上抖音热搜榜需要做哪些准备?
要想在抖音上获得高曝光,首先需要了解抖音热搜榜的算法和规则。抖音热搜榜的排名主要取决于作品的点赞数、评论数、分享数和播放量。其中,播放量是影响排名的关键因素。因此,在创作作品时,要注重提高作品的播放量。此外࿰…...
LDA代码训练报错记录
1、AttributeError: ‘CountVectorizer‘ object has no attribute ‘get_feature_names‘ 代码内容: tf_feature_names tf_vectorizer.get_feature_names()报错信息 AttributeError: CountVectorizer object has no attribute get_feature_names报错解析&#…...
【吞噬星空】爽翻,徐欣喜提永恒之体,罗峰秒杀败类,阿特金磕头认错
Hello,小伙伴们,我是小郑继续为大家深度解析国漫资讯。 吞噬星空动画第89集终于更新了,阿特金三大巨头的好日子到头了,从他们对徐欣出手的那一刻,就已经有取死之道。如今罗峰强势回归,上演复仇戏码,让大家看…...
【c++】跟webrtc学状态改变
peerconn的状态看起来只是为了通知上层PeerConnectionState // See https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectionstateenum class PeerConnectionState {kNew,kConnecting,kConnected,kDisconnected,kFailed,kClosed,};static constexpr absl...
【入门】.Net Core 6 WebApi 项目搭建
一、创建项目 1.1.创建新项目:打开开发工具>创建新项目>搜索API>选择C#语言的ASP.NET Core Web API 1.2.配置新项目:**自定义项目信息以及存储路径 1.3.其他信息:这里框架必须选择.NET 6.0,其他配置默认勾选即可,也可以根…...
xtrabackup备份 脚本
1、全量备份在周末晚上22点执行备份,增量是周一到周六晚上22点执行 2、考虑到增量备份第一次是根据全量备份开始备份,后面都是根据上一次增量备份在增量脚本做了if判断,周日做一次目录清理 3、每周日晚上91点50清理目录 22点就在次备份&#…...
13SpringMVC中拦截器的配置(拦截规则)和多个拦截器的preHandle,postHandle执行顺序原理详解
拦截器 Servlet中的过滤器的实现及其原理,参考文章 配置一个拦截器 SpringMVC中请求的处理流程: 用户请求—>listener—>filter—>DispatcherServlet—>filter—>preHandle—>controller—>postHandle 第一步: 编写一个Java类实现HandlerInterceptor(…...
Liunx中系统安全及文件系统(极其粗糙版)
PS:下面知识点还很粗糙下次有时间再改 系统安全: 系统安全和数据防护,数据备份的资质 比如三台服务器: 500万 工信部是有要求的,组织必须保证处理的个人数据的安全性 品牌形象如何维护呢 基于liunx的安全加固措施…...
Java中的数组
前言: 本篇博客将为大家介绍Java中的数组的相关知识。 目录 基本介绍 概念相关 数组的使用 数组是引用类型 应用场景 保存数据 作为方法的参数 作为方法的返回值 练习 数组转字符串 数组拷贝 求数组中元素的平均值 查找数组中的指定元素(二…...
Java反射调用jar包实现多态
上一篇实现了反射调用jar包,但是没有实现多态,这次先给自己的jar包类抽象一个接口,然后实现类实现接口。最后调用放反射得到的对像转换成接口类型调用执行。 定义接口,指定包为ZLZJar package ZLZJar;public interface ITest {p…...
PowerBI 一些基础功能
1、PowerBI创建日期表 1.1、Power BI 日期表 - 知乎日期是做数据分析的时候使用最频繁的分析维度,一般建议建立单独的日期维度表,并与事实表的日期字段建立连接。 建立日期维度表可通过DAX函数的方式进行: 日期表 CALENDAR(DATE("2023&…...
Mac用命令行安装Adobe代码字体Source Code Pro
执行命令 brew tap homebrew/cask-fonts && brew cask install font-source-code-pro...
工程定制丙级管道井门 物业机房通用款式
工程定制丙级管道井门,作为高层住宅、商业楼宇、物业机房强弱电井的专用消防配套设施,严格遵循国标消防规范生产,是建筑管井防火分隔、安全防护的核心产品。这款丙级管道井门采用钢制一体成型工艺,结构扎实不易变形,具…...
AI智能体开发新范式:用TDD工程化方法构建可靠LLM应用
1. 项目概述:当AI智能体遇上测试驱动开发最近在GitHub上看到一个挺有意思的项目,叫agent-skill-tdd。光看名字,就能嗅到一股“新老结合”的味道——一边是当下火热的AI智能体(Agent),另一边是软件工程领域经…...
STM32多任务处理实战:从裸机调度到FreeRTOS应用详解
1. 项目概述与核心需求解析在嵌入式开发领域,尤其是基于STM32这类资源受限但功能强大的微控制器时,我们常常会遇到一个核心矛盾:硬件只有一个CPU核心,但软件功能却要求它“同时”处理多个任务。比如,一个智能温控器需要…...
SpinalHDL Bool类型详解:从基础概念到实战应用
1. 项目概述:从Verilog的“1‘b1”到SpinalHDL的“Bool”在数字电路设计的底层,信号的真与假、高与低,构成了所有逻辑运算的基石。如果你是从Verilog或VHDL转过来的工程师,对wire、reg或者std_logic类型一定不陌生,它们…...
大语言模型角色扮演技术:从原理到实践的完整指南
1. 项目概述:当大语言模型学会“扮演”角色最近在GitHub上看到一个挺有意思的项目,叫“awesome-llm-role-playing-with-persona”。光看名字,你大概能猜到它和大型语言模型以及角色扮演有关。简单来说,这个项目整理了一个资源列表…...
Silk v3解码器终极指南:高效转换微信QQ语音为MP3格式
Silk v3解码器终极指南:高效转换微信QQ语音为MP3格式 【免费下载链接】silk-v3-decoder [Skype Silk Codec SDK]Decode silk v3 audio files (like wechat amr, aud files, qq slk files) and convert to other format (like mp3). Batch conversion support. 项目…...
Miniblink49深度解析:如何用6MB浏览器内核重构你的桌面应用架构
Miniblink49深度解析:如何用6MB浏览器内核重构你的桌面应用架构 【免费下载链接】miniblink49 a lighter, faster browser kernel of blink to integrate HTML UI in your app. 一个小巧、轻量的浏览器内核,用来取代wke和libcef 项目地址: https://git…...
安科瑞 EMS3.0智慧能源管理解决方案-光伏智维先知引擎,AI驱动预测性维护新范式
一、需求背景新能源光伏场站迈入规模化、长周期运营阶段,组件老化隐匿、故障识别滞后、运维被动响应、资产价值隐性流失已成为行业共性痛点。传统事后维修、定期检修模式难以应对复杂故障与隐性衰减,造成停机损失高、运维成本高、误判漏判率高。依托GB/T…...
基于MCP协议的能源转型智能体:架构、实现与应用场景解析
1. 项目概述:能源转型智能体的“大脑”与“手脚”最近在做一个挺有意思的项目,核心是围绕一个叫apifyforge/energy-transition-intelligence-mcp的智能体展开的。这名字听起来有点拗口,拆开来看,“apifyforge”是发布者࿰…...
保姆级教程:用TensorRT 8.5和Python实现ArcFace动态Batch推理(附完整代码)
从零实现ArcFace动态Batch推理:TensorRT 8.5实战手册 人脸识别技术在实际业务场景中往往需要处理海量并发请求,而传统单张图片推理模式难以满足实时性要求。本文将手把手带您完成PyTorch训练的ArcFace模型到TensorRT动态Batch推理的完整部署流程…...
