当前位置: 首页 > backend >正文

RabbitMQ快速入门

RabbitMQ快速⼊⻔

引入依赖

				<dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.22.0</version></dependency>

编写生产者代码

具体步骤:

  1. 建立连接
  2. 开启信道
  3. 声明交换机
  4. 声明队列
  5. 发送消息
  6. 释放资源
public static void main(String[] args) throws IOException, TimeoutException {//1.建立连接ConnectionFactory connectionFactory = new ConnectionFactory();connectionFactory.setHost(ip地址,填自己的);connectionFactory.setPort(5672); //需提前开放端口号connectionFactory.setUsername("admin");//账号connectionFactory.setPassword("admin");//密码connectionFactory.setVirtualHost("study");//虚拟主机Connection connection = connectionFactory.newConnection();//2.开启信道Channel channel = connection.createChannel();//3.声明交换机 使用内置的交换机//4.声明队列/*** Queue.DeclareOk queueDeclare(String queue, boolean durable, boolean exclusive, boolean autoDelete,*                                  Map<String, Object> arguments) throws IOException;** 参数说明:*  queue:队列名称*  durable:可持久化*  exclusive:是否独占*  autoDelete:是否自动删除*  arguments:额外参数*/channel.queueDeclare("hello",true,false,false,null);//5.发消息/*** void basicPublish(String exchange, String routingKey, BasicProperties props, byte[] body) throws IOException;** 参数声明:*   exchange:交换机名称,不写代表使用内置交换机*   routingKey:路由名称, routingKey = 队列名称 (使用内置交换机,routingKey与队列名称保持一致)*   props:属性配置*   body:消息*/for (int i = 0; i < 10; i++) {String msg = "hello rabbitmq ~" + i;channel.basicPublish("","hello",null,msg.getBytes());}System.out.println("消息发送成功~");//6.资源释放channel.close();connection.close();}

编写消费者代码

具体步骤:

  1. 建立连接
  2. 创建信道
  3. 声明队列
  4. 消费消息
  5. 释放资源
public static void main(String[] args) throws IOException, TimeoutException, InterruptedException {//1.建立连接ConnectionFactory connectionFactory = new ConnectionFactory();connectionFactory.setHost(ip地址);connectionFactory.setPort(5672);connectionFactory.setUsername("admin");connectionFactory.setPassword("admin");connectionFactory.setVirtualHost("study");Connection connection = connectionFactory.newConnection();//2.创建ChannelChannel channel = connection.createChannel();//3.声明队列(可以省略)channel.queueDeclare("hello",true,false,false,null);//4.消费消息DefaultConsumer consumer = new DefaultConsumer(channel){//从队列中收到消息,就会执行的方法@Overridepublic void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {System.out.println("接收到消息: " + new String(body));}};/*** String basicConsume(String queue, boolean autoAck, Consumer callback) throws IOException;* 参数说明:*  queue:队列名称*  autoAck:是否自动确认*  callback:接收到消息后,执行的逻辑*/channel.basicConsume("hello",true,consumer);//等待程序完成Thread.sleep(5000);//5.释放资源channel.close();connection.close();}

http://www.xdnf.cn/news/16511.html

相关文章:

  • 基于FPGA和DDS原理的任意波形发生器(含仿真)
  • 【Unity】Application类常见路径一览表
  • 基于LangGraph Cli的智能数据分析助手
  • 主要分布于内侧内嗅皮层的层Ⅲ的网格-速度联合细胞(Grid × Speed Conjunctive Cells)对NLP中的深层语义分析的积极影响和启示
  • OpenCV(05)直方图均衡化,模板匹配,霍夫变换,图像亮度变换,形态学变换
  • nvim cspell
  • 基于 OpenCV 与 sklearn 的数字识别:KNN 算法实践
  • 123页PPT麦肯锡49个思维工具和方法论PPT
  • 一个典型的微控制器MCU包含哪些模块?
  • Java Collections工具类
  • 达梦有多少个模式
  • 页面性能优化
  • Java基础-IO流
  • 【灰度实验】——图像预处理(OpenCV)
  • 商用车的自动驾驶应用场景主要包括七大领域
  • 开发指南125-HTML DOM事件
  • 1.gradle安装(mac)
  • RocketMQ入门实战详解
  • clock_getres系统调用及示例
  • 智慧社区项目开发(二)——基于 JWT 的登录验证功能实现详解
  • 分布式高可用架构核心:复制、冗余与生死陷阱——从主从灾难到无主冲突的避坑指南
  • 【Linux篇】进程间通信:进程IPC
  • 负载均衡算法中的加权随机算法
  • kafka开启Kerberos使用方式
  • uniapp_微信小程序_根据胶囊按钮计算出的导航栏高度为什么不是44px?
  • 【Linux】Ubuntu上安装.NET 9运行时与ASP.NET Core项目部署入门
  • 复杂人流场景口罩识别漏检率↓76%:陌讯动态特征融合算法实战解析
  • 开源智能体-JoyAgent集成ollama私有化模型
  • ATF 运行时服务
  • 标准解读——2024 数据资产价值评估指南(正式版)【附全文阅读】