赞
踩
RabbitMQ是消息队列的一种。与它相类似的还有RocketMQ、kafka、ZeroMQ等。本质上是一个队列,因其存放的是消息,所以叫做消息队列(MessageQueue简称MQ),常用来实现不同服务server,进程process,线程thread之间通信,常于celery配合使用。我的学习之路《关于原理、属性概念、系统架构、场景考量》
注:描述错误,①中的"正常队列"此处应该称为"死信队列")
可以看到①与②是相同的,可以理解的是,死信队列也是一个普通队列,只是为了实现某个特定功能,我们将其称为死信队列。
名称 | 类型 | 版本(切记版本不能乱搭配,否则启动失败) |
---|---|---|
Erlang | 编程语言 | 20.3 |
RabbbitMQ | 软件 | 3.7.4 |
.../sbin/rabbbitmqctl status
,我的程序出错了,步骤往下走即可解决C:\Windows\System32\config\systemprofile\.erlang.cookie
文件并粘贴到C:\Users\1\ .erlang.cooki
.../sbin/rabbitmq-plugins enable rabbitmq_management
.../sbin/rabbitmqctl start_app
.../sbin/rabbbitmqctl status
.../sbin/rabbitmq-server.bat
或者window服务页进行启动http://localhost:15672
默认账户guest,默认密码guest,注意此账户只能使用localhost登录,而不能通过ip访问,如果需要ip访问,一般需要新建管理员账户
rabbitmqctl list_users
# 账户名test,密码test
rabbitmqctl add_user test test
rabbitmqctl set_user_tags test administrator
rabbitmqctl set_permissions -p "/" test ".*" ".*" ".*"
rabbitmqctl delete_user test
命令名称 | 命令行代码 | 描述 |
---|---|---|
查看版本信息 | rabbitmqctl status 管道符 findstr rabbit | win用关键字findstr,linux用关键字grep |
查看队列列表 | rabbitmqctl list_queues |
import pika # 声明一个socket 实例 connect = pika.BlockingConnection(pika.ConnectionParameters("localhost")) # 声明一个管道 channel = connect.channel() # 声明queue名称为test channel.queue_declare(queue="test", durable=True) # 队列持久化 # RabbitMQ的消息永远不会被直接发送到队列中,它总是需要经过一次交换 channel.basic_publish(exchange='', routing_key="test", body="hello word".getBytes(), properties=pika.BasicProperties(delivery_mode=2, )) # 消息持久化 print("Sent 'hello world'") connect.close()
import pika import time # 声明socket实例 connect = pika.BlockingConnection(pika.ConnectionParameters("localhost")) # 声明一个管道 虽然在之前的produce代码中声明过一次管道, # 但是在不知道produce中的管道是否运行之前(如果未运行,consumers中也不声明的话就会报错), # 在consumers中也声明一次是一种正确的做法 channel = connect.channel() # 声明queue channel.queue_declare(queue="test", durable=True) # 回调函数 def callback(ch, method, properites, body): time.sleep(30) print("-----", ch, method
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。