RabbitMQ简单模式
创始人
2024-05-01 10:15:30
0

🍁博客主页:👉不会压弯的小飞侠
✨欢迎关注:👉点赞👍收藏⭐留言✒
✨系列专栏:👉Linux专栏
🔥欢迎大佬指正,一起学习!一起加油!

在这里插入图片描述

目录

  • 🍁介绍
  • 🍁简单模式完成消息传递
  • 🍁总结


🍁介绍

  • “P”是我们的生产者,“C”是我们的消费者。 中间的框是一个队列 - RabbitMQ 保留的消息缓冲区 代表消费者。
  • 生产者将消息发送到“hello”队列。消费者收到 来自该队列的消息。
    在这里插入图片描述
  • 一个生产者、一个消费者,不需要设置交换机(使用默认的交换机)

🍁简单模式完成消息传递

  • 创建工程(生成者、消费者)

在这里插入图片描述

  • 往两个rabbitmq的pom.xml文件中添加依赖:
com.rabbitmqamqp-client5.6.0org.apache.maven.pluginsmaven-compiler-plugin3.8.01.81.8
  • 编写生产者发送消息
    • 编写消息生产者 Producter
package com.study.rabbitmq.simple;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import java.io.IOException;
import java.util.concurrent.TimeoutException;//简单模式的生产者
public class Producer {public static void main(String[] args) throws IOException, TimeoutException {//创建连接工厂ConnectionFactory connectionFactory = new ConnectionFactory();//设置主机connectionFactory.setHost("*************");  //主机IP//设置端口号connectionFactory.setPort(5672);//虚拟主机名称;默认为 /connectionFactory.setVirtualHost("/");//连接用户名;默认为guestconnectionFactory.setUsername("admin");//连接密码;默认为guestconnectionFactory.setPassword("root");//创建连接Connection connection = connectionFactory.newConnection();//创建信道Channel channel = connection.createChannel();// 声明(创建)队列/*** queue      参数1:队列名称* durable    参数2:是否定义持久化队列,当mq重启之后,还在* exclusive  参数3:是否独占本次连接*            ① 是否独占,只能有一个消费者监听这个队列*            ② 当connection关闭时,是否删除队列* autoDelete 参数4:是否在不使用的时候自动删除队列,当没有consumer时,自动删除* arguments  参数5:队列其它参数*/channel.queueDeclare("simple_queue", true, false, false, null);// 要发送的信息String message = "Hello RabbitMQ!";/*** 参数1:交换机名称,如果没有指定则使用默认Default Exchage* 参数2:路由key,简单模式可以传递队列名称* 参数3:配置信息* 参数4:消息内容*/channel.basicPublish("", "simple_queue", null, message.getBytes());System.out.println("已发送消息:" + message);// 关闭资源channel.close();connection.close();}
}
  • 测试生产者

在这里插入图片描述

在这里插入图片描述

  • 编写消费者接收消息
    • 编写消息消费者Consumer
package rabbitmq.simple;import com.rabbitmq.client.*;import java.io.IOException;
import java.util.concurrent.TimeoutException;public class Consumer {public static void main(String[] args) throws IOException, TimeoutException {//1.创建连接工厂ConnectionFactory factory = new ConnectionFactory();//2. 设置参数factory.setHost("********************");//主机ipfactory.setPort(5672); //端口  默认值 5672factory.setVirtualHost("/");//虚拟机 默认值/factory.setUsername("admin");//用户名factory.setPassword("root");//密码//3. 创建连接 ConnectionConnection connection = factory.newConnection();//4. 创建信道Channel channel = connection.createChannel();/*消费者不需要声明队列,queueDeclare(String queue, boolean durable, boolean exclusive, boolean autoDelete, Map arguments)参数:1. queue:队列名称2. durable:是否持久化,当mq重启之后,还在3. exclusive:* 是否独占。只能有一个消费者监听这队列* 当Connection关闭时,是否删除队列4. autoDelete:是否自动删除。当没有Consumer时,自动删除掉5. arguments:参数。*///如果没有一个名字叫simple_queue的队列,则会创建该队列,如果有则不会创建channel.queueDeclare("simple_queue",true,false,false,null);// 接收消息DefaultConsumer consumer = new DefaultConsumer(channel){/*回调方法,当收到消息后,会自动执行该方法1. consumerTag:标识2. envelope:获取一些信息,交换机,路由key...3. properties:配置信息4. body:数据*/@Overridepublic void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {System.out.println("consumerTag:"+consumerTag);System.out.println("Exchange:"+envelope.getExchange());System.out.println("RoutingKey:"+envelope.getRoutingKey());System.out.println("properties:"+properties);System.out.println("body:"+new String(body));}};/*basicConsume(String queue, boolean autoAck, Consumer callback)参数:1. queue:队列名称2. autoAck:是否自动确认 ,类似咱们发短信,发送成功会收到一个确认消息3. callback:回调对象*/// 消费者类似一个监听程序,主要是用来监听消息channel.basicConsume("simple_queue",true,consumer);}
}
  • 测试消费者

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

🍁总结

• P:生产者,也就是要发送消息的程序
• C:消费者:消息的接受者,会一直等待消息到来。
• queue:消息队列类似一个邮箱,可以缓存消息;生产者向其中投递消息,消费者从其中取出消息。

相关内容

热门资讯

电视安卓系统哪个品牌好,哪家品... 你有没有想过,家里的电视是不是该升级换代了呢?现在市面上电视品牌琳琅满目,各种操作系统也是让人眼花缭...
安卓会员管理系统怎么用,提升服... 你有没有想过,手机里那些你爱不释手的APP,背后其实有个强大的会员管理系统在默默支持呢?没错,就是那...
安卓系统软件使用技巧,解锁软件... 你有没有发现,用安卓手机的时候,总有一些小技巧能让你玩得更溜?别小看了这些小细节,它们可是能让你的手...
安卓系统提示音替换 你知道吗?手机里那个时不时响起的提示音,有时候真的能让人心情大好,有时候又让人抓狂不已。今天,就让我...
安卓开机不了系统更新 手机突然开不了机,系统更新还卡在那里,这可真是让人头疼的问题啊!你是不是也遇到了这种情况?别急,今天...
安卓系统中微信视频,安卓系统下... 你有没有发现,现在用手机聊天,视频通话简直成了标配!尤其是咱们安卓系统的小伙伴们,微信视频功能更是用...
安卓系统是服务器,服务器端的智... 你知道吗?在科技的世界里,安卓系统可是个超级明星呢!它不仅仅是个手机操作系统,竟然还能成为服务器的得...
pc电脑安卓系统下载软件,轻松... 你有没有想过,你的PC电脑上安装了安卓系统,是不是瞬间觉得世界都大不一样了呢?没错,就是那种“一机在...
电影院购票系统安卓,便捷观影新... 你有没有想过,在繁忙的生活中,一部好电影就像是一剂强心针,能瞬间让你放松心情?而我今天要和你分享的,...
安卓系统可以写程序? 你有没有想过,安卓系统竟然也能写程序呢?没错,你没听错!这个我们日常使用的智能手机操作系统,竟然有着...
安卓系统架构书籍推荐,权威书籍... 你有没有想过,想要深入了解安卓系统架构,却不知道从何下手?别急,今天我就要给你推荐几本超级实用的书籍...
安卓系统看到的炸弹,技术解析与... 安卓系统看到的炸弹——揭秘手机中的隐形威胁在数字化时代,智能手机已经成为我们生活中不可或缺的一部分。...
鸿蒙系统有安卓文件,畅享多平台... 你知道吗?最近在科技圈里,有个大新闻可是闹得沸沸扬扬的,那就是鸿蒙系统竟然有了安卓文件!是不是觉得有...
宝马安卓车机系统切换,驾驭未来... 你有没有发现,现在的汽车越来越智能了?尤其是那些豪华品牌,比如宝马,它们的内饰里那个大屏幕,简直就像...
p30退回安卓系统 你有没有听说最近P30的用户们都在忙活一件大事?没错,就是他们的手机要退回安卓系统啦!这可不是一个简...
oppoa57安卓原生系统,原... 你有没有发现,最近OPPO A57这款手机在安卓原生系统上的表现真是让人眼前一亮呢?今天,就让我带你...
安卓系统输入法联想,安卓系统输... 你有没有发现,手机上的输入法真的是个神奇的小助手呢?尤其是安卓系统的输入法,简直就是智能生活的点睛之...
怎么进入安卓刷机系统,安卓刷机... 亲爱的手机控们,你是否曾对安卓手机的刷机系统充满好奇?想要解锁手机潜能,体验全新的系统魅力?别急,今...
安卓系统程序有病毒 你知道吗?在这个数字化时代,手机已经成了我们生活中不可或缺的好伙伴。但是,你知道吗?即使是安卓系统,...
奥迪中控安卓系统下载,畅享智能... 你有没有发现,现在汽车的中控系统越来越智能了?尤其是奥迪这种豪华品牌,他们的中控系统简直就是科技与艺...