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发送消息

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

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

相关文章

SystemVerilog Assertions应用指南 Chapter1.31 在属性中使用形参

可以用定义形参( formal arguments)的方式来重用一些常用的属性。属性“arb”使用了4个形参,并且根据这些形参进行检验。其中还定义了特定的时钟。SVA允许使用属性的形参来定义时钟。这样,属性可以应用在使用不同时钟的相似设计模块中。同样的,时序延迟也可以参数化,这使得属性…

cocos creator 在网页中调试的时候直接代码调试方法

cocos creator 在网页中调试的时候直接代码调试方法

Milvus 介绍

Milvus 介绍 Milvus 矢量数据库是什么&#xff1f;关键概念非结构化数据嵌入向量向量相似度搜索 为什么是 Milvus?支持哪些索引和指标&#xff1f;索引类型相似度指标(Similarity metrics) 应用示例Milvus 是如何设计的&#xff1f;开发者工具API访问Milvus 生态系统工具 本页…

算法专题:双指针

目录 题目1&#xff1a;移动零 题目2&#xff1a;复写零 题目3&#xff1a;快乐数 题目4&#xff1a;最多水的容器 题目5&#xff1a;有效三角形的个数 题目6&#xff1a;两数之和为s 题目1&#xff1a;移动零 给定一个数组nums&#xff0c;编写一个函数将所有的0移动到数…

VueRouter 源码解析

重要函数思维导图 路由注册 在开始之前&#xff0c;推荐大家 clone 一份源码对照着看。因为篇幅较长&#xff0c;函数间的跳转也很多。 使用路由之前&#xff0c;需要调用 Vue.use(VueRouter)&#xff0c;这是因为让插件可以使用 Vue export function initUse(Vue: GlobalAP…

Vue2使用定时器和闭包实现防抖和节流函数。将函数放入util.js中,供具体功能在methods中调用

Vue2使用定时器和闭包实现防抖和节流函数。将函数放入util.js中&#xff0c;供具体功能在methods中调用。<br/ 参考文档&#xff1a; 如何在Vue中优雅的使用防抖节流人类高质量JS防抖与节流机制Vue项目中使用防抖和节流vue2使用lodash中的防抖&#xff08;debounce&#xff…

Android端自定义铃声

随着移动应用竞争进入红海时代&#xff0c;如何在APP推送中别出心裁显得尤为重要。例如对自己的APP推送赋予独特的推送铃声&#xff0c;能够给用户更加理想的使用体验。 1、个性化提醒铃声有助于当收到特定类型的消息时&#xff0c;用户能够立刻识别出来。 2、不同的推送铃声…

性能测试的分类、区别以及特点这些你都知道了吗?

现在性能测试一个比较火的话题&#xff0c;究其原因是因为现在很多公司都要求测试人员会做性能测试&#xff0c;所以今天小编就来普及下性能测试的几种分类和其特点。 关于性能测试有几个名词&#xff1a;性能测试、负载测试、压力测试、并发测试&#xff0c;很多人都是混合使…

零基础制作预约小程序,微信小程序预约服务指南

随着互联网的发展&#xff0c;越来越多的服务开始转移到线上。预约服务也是其中之一。通过微信小程序&#xff0c;商家可以提供更加便捷的预约服务&#xff0c;让客户随时随地预约商品或服务。本文将介绍如何零基础制作预约小程序&#xff0c;包括使用第三方制作平台、选择合适…

可信执行环境简介:ARM 的 TrustZone

目录 可信执行环境安全世界与普通世界 - 上下文切换机制ARMv7 中的异常处理ARMv8 中的异常处理 信任区商业实施TrustZone 本身的漏洞高通Trustonic 信任区强化的弱点结论声明 可信执行环境 具有信任区的 ARM 处理器实现了架构安全性每个物理处理器内核提供两个虚拟的扩展 核心…

使用Spyder进行动态网页爬取:实战指南

导语 知乎数据的攀爬价值在于获取用户观点、知识和需求&#xff0c;进行市场调查、用户画像分析&#xff0c;以及发现热门话题和可能的新兴领域。同时&#xff0c;知乎上的问题并回答也是宝贵的学习资源&#xff0c;用于知识图谱构建和自然语言处理研究。爬取知乎数据为决策和…

扩散模型学习

第一章 1.1 的原理 给定一批训练数据X&#xff0c;假设其服从某种复杂的真实 分布p(x)&#xff0c;则给定的训练数据可视为从该分布中采样的观测样本x。 生成模型就是估计训练数据的真实分布&#xff0c;使得估计的分布q(x)和真实分布p(x)差距尽可能能的小。 使得所有训练…

Spring Security—Servlet 应用架构

目录 一、Filter&#xff08;过滤器&#xff09;回顾 二、DelegatingFilterProxy 三、FilterChainProxy 四、SecurityFilterChain 五、Security Filter 六、打印出 Security Filter 七、添加自定义 Filter 到 Filter Chain 八、处理 Security 异常 九、保存认证之间的…

hbase操作学习

1.namespace list_namespace 展示数据库 create_namespace 可以带属性名 属性值 create_namespace mydb,{author>hjp,ctime>2023-10-18}describe_namespace ‘库名’ 查看库的详细信息 alter_namespace ‘库名’ 修改表的详细信息 删除就是把method设置为unset dr…

pgbackrest归档目录满,清理后写入仍报错,分析及处理

一、 背景 pgbackrest配置的归档目录/backup被写满 归档报错 No space left on device&#xff0c;wal日志堆积 解决方法直接查看第三部分 二、 问题分析及处理 1. 目录清理 首先想到的就是清理/backup目录&#xff0c;清理后剩余6T空间 但发现pgbackrest归档依旧在报错 No …

程序被加载到进程的哪个位置?

程序被加载器加载到内存后&#xff0c;通过/proc/$pid/maps文件&#xff0c;我们可以观测到程序被加载的内存位置。那么&#xff0c;通过打印进程内存的方式&#xff0c;让我们确认程序是不是真的加载到内存&#xff0c;以及加载到内存的程序和硬盘中的文件有没有区别。 编写测…

Excel拆分单元格怎么操作?学会这4招,工作效率倍涨!

“刚刚在做一份Excel的报表&#xff0c;需要将某些单元格进行拆分&#xff0c;但是我不知道应该如何处理&#xff0c;大家在使用Excel时有什么比较简单的单元格拆分方法吗&#xff1f;” 当我们需要使用Excel处理大量数据或者创建专业报表时&#xff0c;可能需要对单元格进行拆…

微信小程序------框架

目录 视图层 WXML 数据绑定 列表渲染 条件渲染 模板 wsx事件 逻辑层 生命周期 跳转 视图层 WXML WXML&#xff08;WeiXin Markup Language&#xff09;是框架设计的一套标签语言&#xff0c;结合基础组件、事件系统&#xff0c;可以构建出页面的结构。 先在我们的项目中…

机器学习tip:sklearn中的pipeline

文章目录 1 加载数据集2 构思算法的流程3 Pipeline执行流程的分析ReferenceStatement 一个典型的机器学习构建包含若干个过程 源数据ETL数据预处理特征选取模型训练与验证 一个典型的机器学习构建包含若干个过程 以上四个步骤可以抽象为一个包括多个步骤的流水线式工作&…

Linux 进程操作

文章目录 进程的基本知识进程pid进程常用的函数 forkwait和waitpidexec函数簇system函数信号处理signal函数Linux的SIGUSR1SIGUSR2 讨论 进程的基本知识 一个程序的执行称为一个进程&#xff0c;所有的代码都是在进程中执行的&#xff0c;进程是操作系统资源分配的基本单位。 在…