Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >RabbitMQ 入门教程Hello World

RabbitMQ 入门教程Hello World

作者头像
小熊学Java
发布于 2023-07-16 06:22:26
发布于 2023-07-16 06:22:26
23800
代码可运行
举报
文章被收录于专栏:全栈学习之路全栈学习之路
运行总次数:0
代码可运行

官网Hello World地址:https://www.rabbitmq.com/tutorials/tutorial-one-java.html

1、新建maven项目

添加依赖

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
     <groupId>org.example</groupId>
     <artifactId>xiaobear-RabbitMQ</artifactId>
     <version>1.0-SNAPSHOT</version>
 
     <properties>
         <maven.compiler.source>8</maven.compiler.source>
         <maven.compiler.target>8</maven.compiler.target>
     </properties>
 
     <dependencies>
         <dependency>
             <groupId>com.rabbitmq</groupId>
             <artifactId>amqp-client</artifactId>
             <version>5.13.1</version>
         </dependency>
     </dependencies>
 
 </project>

2、建生产者类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 public class Product {
 
     private final static String QUEUE_NAME = "hello";
 
     public static void main(String[] args) throws Exception {
         //创建连接
         ConnectionFactory factory = new ConnectionFactory();
         factory.setHost("192.168.130.134");
         factory.setUsername("admin");
         factory.setPassword("admin123");
         //channel 实现了自动 close 接口 自动关闭 不需要显示关闭
         try (Connection connection = factory.newConnection();
              Channel channel = connection.createChannel()) {
             /**
              * 生成一个队列
              * 1.队列名称
              * 2.队列里面的消息是否持久化 默认消息存储在内存中
              * 3.该队列是否只供一个消费者进行消费 是否进行共享 true 可以多个消费者消费
              * 4.是否自动删除 最后一个消费者端开连接以后 该队列是否自动删除 true 自动删除
              * 5.其他参数
              */
             channel.queueDeclare(QUEUE_NAME, false, false, false, null);
             String message = "Hello World!";
             /**
              * 发送一个消息
              * 1.发送到那个交换机
              * 2.路由的 key 是哪个
              * 3.其他的参数信息
              * 4.发送消息的消息体
              */
             channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
             System.out.println(" [x] Sent '" + message + "'");
         }
     }
 }

执行后,打开管理面板,会发现,存在一条消息待消费

3、建消费者类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 public class RabbitMQConfig {
 
     /**
      * rabbitmq连接信息
      * @return
      */
     public static ConnectionFactory connectRabbitMq(){
         //创建连接
         ConnectionFactory factory = new ConnectionFactory();
         factory.setHost("192.168.130.134");
         factory.setUsername("admin");
         factory.setPassword("admin123");
         return factory;
     }
 }
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 public class Consumer {
     private final static String QUEUE_NAME = "hello";
 
     public static void main(String[] args) throws Exception {
         //创建连接诶信息
         ConnectionFactory factory = RabbitMQConfig.connectRabbitMq();
 
         Connection connection = factory.newConnection();
         Channel channel = connection.createChannel();
 
         channel.queueDeclare(QUEUE_NAME, false, false, false, null);
         System.out.println(" [*] Waiting for messages. To exit press CTRL+C");
         //推送的消息如何进行消费的接口回调
         DeliverCallback deliverCallback = (consumerTag, delivery) -> {
             String message = new String(delivery.getBody(), "UTF-8");
             System.out.println(" [x] Received '" + message + "'");
         };
         /**
          * 消费者消费消息
          * 1.消费哪个队列
          * 2.消费成功之后是否要自动应答 true 代表自动应答 false 手动应答
          * 3.消费者未成功消费的回调
          */
         channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag -> { });
     }
 }

执行消费者后,控制台打印出消费的消息,此时管理面板待消费的消息为0

4、遇到的问题

1、Connection timed out: connect

查看5672端口是否开放

2、connection error; protocol method: #method<connection.close>(reply-code=530, reply-text=NOT_ALLOWED

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"

Virtual Host为【/】的set permission给用户

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-08-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小熊学Java 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
RabbitMQ 队列使用基础教程
https://www.rabbitmq.com/client-libraries/java-versions
授客
2024/11/21
2000
RabbitMQ 队列使用基础教程
RabbitMQ入门之HelloWorld
发送单个消息的生产者和接收消息并打印出来的消费者。 在下图中,“ P”是生产者,“ C”是消费者。中间的框是一个队列-RabbitMQ 代表使用者保留的消息缓冲区 创建 Maven 项目
兮动人
2021/07/21
2540
RabbitMQ入门之HelloWorld
RabbitMQ简单消息发送与接收
  这里将编写两个java程序。发送单个消息的生产者和接收消并打印出来的消费者。   在下图中,p是我们的生产者,c是我们的消费者。中间框是一个队列-RabbitMQ代表使用者保留的消息缓冲区。
别团等shy哥发育
2023/02/25
5980
RabbitMQ简单消息发送与接收
RabbitMQ 入门案例
在下图中,“ P” 是我们的生产者,“ C” 是我们的消费者。中间的框是一个队列 RabbitMQ 代表使用者保留的消息缓冲区
用户9615083
2022/12/25
4440
RabbitMQ 入门案例
rabbitMQ-simple 简单模式
1 导入依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchem
用户5927264
2019/08/01
2020
rabbitMQ-simple 简单模式
RabbitMq 笔记,一篇文章入门
默认的端口15672:rabbitmq管理平台端口号 默认的端口5672: rabbitmq消息中间内部通讯的端口 默认的端口号25672 rabbitmq集群的端口号
一写代码就开心
2022/05/09
7760
RabbitMq 笔记,一篇文章入门
RabbitMQ入门教程
MQ(Message Quene):翻译为消息队列,通过典型的生产者和消费者模型,生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵入,轻松的实现系统间解耦。别名为消息中间件通过利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。
乐心湖
2020/07/31
1.1K0
RabbitMQ入门教程
RabbitMQ 消息队列入门
RabbitMQ,是个消息代理人message broker。它接收,存储,转发消息。
_淡定_
2020/04/23
8430
RabbitMQ 消息队列入门
RibbitMQ学习笔记之MQ练习
在本教程的这一部分中,我们将用 Java 编写两个程序。发送单个消息的生产者和接收消息并打印出来的消费者。我们将介绍 Java API 中的一些细节。
默 语
2024/11/20
800
RibbitMQ学习笔记之MQ练习
rabbitMQ---- >hello word
生产者代码 public class producer { public static final String QUEUE_NAME="hello"; public static void main(String[] args) throws IOException, TimeoutException { //创建工厂 ConnectionFactory factory = new ConnectionFactory(); //工
一个风轻云淡
2022/11/13
1380
rabbitMQ---- >hello word
RabbitMQ 系列(2) —— 用 java 连接 RabbitMQ
RabbitMQ 作为一个消息中间件,整体上采用了生产者与消费者模型,主要负责接收,存储和转发消息。
求和小熊猫
2020/12/16
1.2K0
RabbitMQ 系列(2) —— 用 java 连接 RabbitMQ
消息队列RabbitMQ核心:简单(Hello World)模式、队列(Work Queues)模式、发布订阅模式
消息队列RabbitMQ提供了六种工作模式:简单模式、work queues、发布订阅模式、路由模式、主题模式、发布确认模式。本文将介绍前三种工作模式。所有的案例代码都是使用Java语言实现。
百思不得小赵
2022/12/07
5880
消息队列RabbitMQ核心:简单(Hello World)模式、队列(Work Queues)模式、发布订阅模式
SpringBoot: RabbitMq队列之优先级
在我们系统中有一个订单催付的场景,我们的客户在天猫下的订单,淘宝会及时将订单推送给我们,如果在用户设定的时间内未付款那么就会给用户推送一条短信提醒,很简单的一个功能对吧,但是,tmall商家对我们来说,肯定是要分大客户和小客户的对吧,比如像苹果,小米这样大商家一年起码能给我们创造很大的利润,所以理应当然,他们的订单必须得到优先处理,而曾经我们的后端系统是使用 redis 来存放的定时轮询,大家都知道 redis 只能用 List 做一个简简单单的消息队列,并不能实现一个优先级的场景,所以订单量大了后采用 RabbitMQ 进行改造和优化,如果发现是大客户的订单给一个相对比较高的优先级,否则就是默认优先级。
Freedom123
2024/03/29
2820
SpringBoot: RabbitMq队列之优先级
RabbitMQ详解(二)------消息通信的概念
  说到消息通信,可能我们首先会想到的是邮箱,QQ,微信,短信等等这些通信方式,这些通信方式都有发送者,接收者,还有一个中间存储离线消息的容器。但是这些通信方式和我们要讲的 RabbitMQ 的通信模型是不一样的,比如和邮件的通信方式相比,邮件服务器基于 POP3/SMTP 协议,通信双方需要明确指定,并且发送的邮件内容有固定的结构。而 RabbitMQ 服务器基于 AMQP 协议,这个协议是不需要明确指定发送方和接收方的,而且发送的消息也没有固定的结构,甚至可以直接存储二进制数据,并且和邮件服务器一样,也能存储离线消息,最关键的是 RabbitMQ 既能够以一对一的方式进行路由,还能够以一对多的方式进行广播。
IT可乐
2018/07/24
8080
RabbitMQ详解(二)------消息通信的概念
最详解消息队列以及RabbbitMQ之HelloWorld
对消息队列进行技术选型时,需要通过以下指标衡量你所选择的消息队列,是否可以满足你的需求:
小熊学Java
2022/09/04
6070
RabbitMQ系列(一)Hello World
消息中间件:简单的说就是用来传输消息的中间载体,就是将你的信息发送到接受方,它并不关心发送的数据是什么。RabbitMQ就是一个消息中间件。
Jensen_97
2023/07/20
1540
RabbitMQ系列(一)Hello World
原 Mac下RabbitMq安装与测试教程
RabbitMq基础教程之安装与测试 Installing on Mac I. 安装 brew install rabbitmq ## 进入安装目录 cd /usr/local/Cellar/rabbitmq/3.7.5 # 启动 brew services start rabbitmq # 当前窗口启动 rabbitmq-server <!-- more --> 启动控制台之前需要先开启插件 ./rabbitmq-plugins enable rabbitmq_management 进入控制台:
一灰灰blog
2018/06/13
1.4K0
RabbitMQ 之简单队列
RabbitMQ是一个消息代理:它接受并转发消息。 您可以将其视为邮局:当您将要把寄发的邮件投递到邮箱中时,您可以确信Postman 先生最终会将邮件发送给收件人。 在这个比喻中,RabbitMQ是一个邮箱,邮局和邮递员,用来接受,存储和转发二进制数据块的消息。
海向
2019/09/23
4000
RabbitMQ 之简单队列
026. RabbitMQ 入门及消息分发机制
1. RabbitMQ 简介 ---- RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种客户端。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。 2. RabbitMQ 安装运行 ---- 1. 安装依赖环境 2. 安装 RabbitMQ 3. 启动和关闭 4. 开启 Web 管理插件 见后面的笔记。 5. 设置防火墙 3. RabbitMQ 基本配置 ---- RabbitMQ 端口 RabbitMQ 会绑定一些端口,安装完后,需要将这
山海散人
2021/03/03
6400
026. RabbitMQ 入门及消息分发机制
RabbitMQ 的 6 种工作模式
先以 java 应用程序的方式连接 RabbitMQ ,后期再考虑与 Spring Boot 整合工作。
啵啵肠
2023/11/17
3570
相关推荐
RabbitMQ 队列使用基础教程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验