前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >rabbitmq实例_rabbitmq创建队列

rabbitmq实例_rabbitmq创建队列

作者头像
全栈程序员站长
发布于 2022-11-09 08:45:04
发布于 2022-11-09 08:45:04
1.4K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

RabbitMQ简介

RabbitMQ是一个受欢迎的消息代理,通常用于应用程序之间或者程序的不同组件之间通过消息来进行集成。具有高可用高并发的优点,适合集群服务器。采用 Erlang实现, 对主要的编程语言都有客户端支持。

RabbitMQ环境配置

linux下环境配置

我用的是centos 6.5版本。

先从这个地址下载安装包

下载地址

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ tar -zxvf otp_src_18.3.tar.gz 

$ cd otp_src_18.3

$ ./configure --prefix=/usr/local/erlang --with-ssl -enable-threads -enable-smmp-support -enable-kernel-poll --enable-hipe --without-javac

$ make

$ sudo make install

配置环境变量

vim /etc/profile

在文件末尾添加下面文字:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ERLANG_HOME=/usr/local/erlang
PATH=$ERLANG_HOME/bin:$PATH
export ERLANG_HOME
export PATH

使环境变量生效

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
source /etc/profile

然后下载RabbitMQ,下载地址

先安装依赖

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo yum install xmlto
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ xz -d rabbitmq-server-generic-unix-3.6.1.tar.xz

$ tar -xvf rabbitmq-server-generic-unix-3.6.1.tar 

# 移动目录
$ sudo cp -rf ./rabbitmq_server-3.6.1/ /usr/local/

$ cd /usr/local

#改名字
$  mv rabbitmq_server-3.6.1 rabbitmq-3.6.1

# 安装web管理插件
$ cd sbin/

$ ./rabbitmq-plugins enable rabbitmq_management

启动和关闭服务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ ./rabbitmq-server

# 后台启动
$ ./rabbitmq-server -detached

# 关闭
$ ./rabbitmqctl stop

登录web管理端

启动rabbitmq,然后浏览器输入 http://10.0.0.221:15672/

这个ip地址是你实际安装的主机的ip,请根据实际情况修改。

下面配置登录账号

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ ./rabbitmqctl add_user pony 123456
Creating user "pony" ...

$ ./rabbitmqctl set_user_tags pony administrator       
Setting tags for user "pony" to [administrator] ...

刷新下,用刚才创建的账号登录,如下:

有一点要注意,如果主机配有防火墙,要把用到的端口都打开

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-A INPUT -p tcp -m state --state NEW -m tcp --dport 15672 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 25672 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5672 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 4369 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5671 -j ACCEPT

windows下环境配置

erlang下载地址

rabbitmq下载地址

可以根据需要下载自己所需要的版本,我这里下载的分别是:

otp_win64_18.3.exe和rabbitmq-server-3.6.9.exe

默认方式安装otp_win64_18.3.exe,完成后,配置环境变量

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ERLANG_HOME C:\Program Files\erl7.3

添加到PATH

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
%ERLANG_HOME%\bin;

默认方式安装rabbitmq-server-3.6.9.exe,完成后,配置环境变量

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
RABBITMQ_SERVER C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.9

添加到PATH

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
%RABBITMQ_SERVER%\sbin;

进入sbin目录打开一个控制台,安装web管理插件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.9\sbin>rabbitmq-plugins.bat enable rabbitmq_management

然后重启下服务使上面的配置生效(注意这里要使用管理员打开cmd命令行,路径无影响),

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
C:\WINDOWS\system32>net stop RabbitMQ && net start RabbitMQ
RabbitMQ 服务正在停止.
RabbitMQ 服务已成功停止。

RabbitMQ 服务正在启动 .
RabbitMQ 服务已经启动成功。


C:\WINDOWS\system32>

打开浏览器,输入http://localhost:15672/,可以正常访问。由于我是在本机安装,所以这里是localhost。

接下来配置一个账号并赋予管理员权限(当然要确保是启动状态),

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.9\sbin>rabbitmqctl.bat add_user pony 123456
Creating user "pony" ...

C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.9\sbin>rabbitmqctl.bat set_user_tags pony administrator
Setting tags for user "pony" to [administrator] ...

在web端用这个账号登录,可以成功!

java调用示例

我的开发环境是myeclipse+win10,windows环境下已经按照前面章节配置好了rabbitmq服务。**然后保持启动状态。**java要使用rabbitmq需要依赖一个客户端。下载地址

如果用maven的话就不用下载,配置文件加上依赖描述即可。

我这里新建两个工程,分别为RabbitMQDemo-P(表示生产者)和RabbitMQDemo-C(表示消费者),两个工程运行起来后就代表两个独立的进程通过消息队列通信。生产者不断的往消息队列发送消息,而消费者不断的从队列取消息。工程中导入前面下载的客户端依赖包。

源码来自:rabbitmq-tutorials

eclipse工程源码下载地址

先生产者的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private final static String QUEUE_NAME = "hello";
public static void main(String[] args) throws Exception{ 

// TODO Auto-generated method stub
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");//因为两个进程在同一个机器上
Connection connection = null;
Channel channel = null;
connection = factory.newConnection();
channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
String message = "Hello World!";
channel.basicPublish("", QUEUE_NAME, null, message.getBytes("UTF-8"));
System.out.println(" [Producer] Sent '" + message + "'");
channel.close();
connection.close();
}

比较简单,涉及到的API具体说明可以自行搜索学习。运行一次就往名为hello的队列上发布一条消息:“Hello World”,然后进程结束。

消费者稍微复杂一点,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private final static String QUEUE_NAME = "hello";
public static void main(String[] args) throws Exception{ 

ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
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");
Consumer consumer = new DefaultConsumer(channel) { 

@Override
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body)
throws IOException { 

String message = new String(body, "UTF-8");
System.out.println(" [Consumer] Received '" + message + "'");
}
};
channel.basicConsume(QUEUE_NAME, true, consumer);
}

Channel.basicConsume方法将Consumer与消息队列绑定,它的定义如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
String basicConsume(String queue, boolean autoAck, Consumer callback) throws IOException 

第一个参数是Consumer绑定的队列名,第二个参数是自动确认标志,如果为true,表示Consumer接受到消息后,会自动发确认消息(Ack消息)给消息队列,消息队列会将这条消息从消息队列里删除,第三个参数就是Consumer对象,用于处理接收到的消息。

第三个参数其实是个回调,当消费者收到消息时,会调用Consumer对象的handleDelivery方法。我们这里重写了这个方法,收到消息之后打印出来。

先运行消费者,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 [*] Waiting for messages. To exit press CTRL+C

开始等待消息。

再运行生产者,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 [Producer] Sent 'Hello World!'

再次看下消费者的控制台信息,接收到消息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 [*] Waiting for messages. To exit press CTRL+C
[Consumer] Received 'Hello World!'

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月26日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
分布式--RabbitMQ入门
分布式项目中,模块与模块之间的通信可以使用RPC框架,如Dubbo,但RPC中调用方模块获取到被调用方的结果是同步的,争对一些只需要异步调用的方法,如日志存储、发送消息等,RPC就显得效率低下了,AMQP协议的推出就是用来解决进程之间的异步消息通信
aruba
2022/09/19
5770
分布式--RabbitMQ入门
RabbitMQ 简介
RabbitMQ是一个在AMQP(Advanced Message Queuing Protocol )基础上实现的,可复用的企业消息系统。它可以用于大型软件系统各个模块之间的高效通信,支持高并发,支持可扩展。
橘子君丶
2023/03/20
2890
RabbitMQ 简介
【RabbitMQ】RabbitMQ应用
官方安装指南:https://www.rabbitmq.com/install-rpm.html
瑞新
2021/11/08
1.8K0
快速入门RabbitMQ核心概念
我们知道RabbitMQ是基于Erlang编写的,所以在安装RabbitMQ之前需要确保安装了Erlang环境。RabbitMQ与Erlang是有版本对应关系的,可以参考官方列举的版本对应关系:
端碗吹水
2020/11/24
5210
RabbitMQ入门,我是动了心的
人一辈子最值得炫耀的不应该是你的财富有多少(虽然这话说得有点违心,呵呵),而是你的学习能力。技术更新迭代的速度非常快,那作为程序员,我们就应该拥有一颗拥抱变化的心,积极地跟进。
沉默王二
2020/06/24
6320
RabbitMq 技术文档
AMQP即Advanced Message Queuing Protocol,高级消息队列协议,是面向消息中间件设计的应用层协议的一个开放标准。它的主要特点是面向消息、队列、路由(包括点对点和发布/订阅)]、可靠性和安全。 AMQP允许来自不同供应商的消息生产者和消费者实现真正的互操作扩展,就如同SMTP、HTTP、FTP等协议采用的方式一样。而此前对于消息中间件的标准化努力则集中在API层面上(比如JMS),且没有提供互操作性的途径。不同于JMS的仅仅定义API,AMQP是一个线路级的协议——它描述了通过网络传输的字节流的数据格式。因此,遵从这个协议的任何语言编写的工具均可以操作AMQP消息。 AMQP模型
WindWant
2020/09/11
2.6K0
RabbitMq 技术文档
RabbitMQ安装、配置与入门
版权声明:本文为博主原创文章,欢迎转载。 https://blog.csdn.net/chengyuqiang/article/details/91594244
程裕强
2019/07/02
1K0
RabbitMQ安装、配置与入门
Windows下RabbitMQ安装及入门
1.Windows下安装RabbitMQ需要以下几个步骤    (1):下载erlang,原因在于RabbitMQ服务端代码是使用并发式语言erlang编写的,下载地址:http://www.erla
庞小明
2018/03/08
6610
Windows下RabbitMQ安装及入门
快速学习-RabbitMQ快速入门
RabbitMQ由Erlang语言开发,Erlang语言用于并发及分布式系统的开发,在电信领域应用广泛,OTP(Open Telecom Platform)作为Erlang语言的一部分,包含了很多基于Erlang开发的中间件及工具库,安装RabbitMQ需 要安装Erlang/OTP,并保持版本匹配,如下图:
cwl_java
2020/01/14
1.1K0
快速学习-RabbitMQ快速入门
Windows 下安装 RabbitMQ 服务器及基本配置
安装 Erlang 时要注意安装的 RabbityMQ 所依赖的 Erlang 版本,根据 RabbitMQ 的要求选择一个版本,这里我要安装的 RabbitMQ 的版本是 3.7.7 ,他依赖的Erlang版本范围是19.3.6.4 到 21.0.x,因此我选择版本是OTP 20.3. Erlang下载地址:https://www.erlang.org/downloads。下载Erlang安装包后直接安装就可以了。
用户11332765
2024/10/28
5220
Windows 下安装 RabbitMQ 服务器及基本配置
rabbitmq使用案例_RabbitMq
参考网站: http://blog.chinaunix.net/topic/surpershi/ http://blog.csdn.net/lwkcn/article/details/25086467 http://snoopyxdy.blog.163.com/blog/static/60117440201352615631930/
全栈程序员站长
2022/11/10
5810
rabbitmq使用案例_RabbitMq
C#调用RabbitMQ实现消息队列
我在刚接触使用中间件的时候,发现,中间件的使用并不是最难的,反而是中间件的下载,安装,配置才是最难的。
Kiba518
2019/10/23
1.8K0
C#调用RabbitMQ实现消息队列
RabbitMQ 集群
​ 如果RabbitMQ 服务器遇到内存崩溃、机器掉电或者主板故障情况。单台RabbitMQ服务器可以满足每秒 1000 条消息的吞吐量,那么如果应用需要 RabbitMQ 服务满足每秒 10 万条消息的吞吐量呢?购买昂贵的服务器来增强单机 RabbitMQ 务的性能显得捉襟见肘,搭建一个 RabbitMQ 集群才是解决实际问题的关键 。
OY
2022/03/20
3340
RabbitMQ 集群
原 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退出时,默认会将消息和队列都清除,所以需要在第一次声明队列和发送消息时指定其持久化属性为true,这样RabbitMQ会将队列、消息和状态存到RabbitMQ本地的数据库,重启后会恢复。
烂猪皮
2020/10/10
9780
RabbitMQ在分布式系统中的应用
RabbitMQ详解解答【面试+工作】
如果安装rabbitMQ首先安装基于erlang语言支持的OTP软件,然后在下载rabbitMQ软件进行安装(安装过程都是下一步,在此不在说了)
Java帮帮
2018/09/29
1.5K0
RabbitMQ详解解答【面试+工作】
RabbitMQ系列2 RabbitMQ安装与基础入门
AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。Erlang中的实现有RabbitMQ等。
一只胡说八道的猴子
2021/03/04
4720
RabbitMQ系列2  RabbitMQ安装与基础入门
RabbitMQ使用教程(超详细)
下载地址:http://www.rabbitmq.com/download.html
全栈程序员站长
2022/07/21
2.5K0
RabbitMQ使用教程(超详细)
18-基于CentOS7搭建RabbitMQ3.10.7集群镜像队列+HaProxy+Keepalived高可用架构
镜像队列文档:Classic Queue Mirroring — RabbitMQ
彼岸舞
2022/10/06
4020
18-基于CentOS7搭建RabbitMQ3.10.7集群镜像队列+HaProxy+Keepalived高可用架构
rabbit的简单搭建,java使用rabbitmq queue的简单例子和一些坑
由于本人的码云太多太乱了,于是决定一个一个的整合到一个springboot项目里面。
ydymz
2018/09/11
1.4K0
rabbit的简单搭建,java使用rabbitmq queue的简单例子和一些坑
相关推荐
分布式--RabbitMQ入门
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文