Celery的中间人-RabbitMQ

it2022-05-08  9

RabbitMQ 是一个在AMQP(Advanced Message Queuing Protocol 高级消息队列协议)基础上完成的,可复用的企业消息系统,用Erlang(面向并发的编程语言)实现使用场景在项目中,将一些无需即时返回且消耗的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量。Ubuntu 安装 sudo apt-get install rabbitmq-serverCelery 使用RabbitMQ http://docs.celeryproject.org/en/latest/getting-started/brokers/rabbitmq.html#broker-rabbitmq

服务器管理查看状态1.which rabbitmqctl 例如-> /usr/sbin/rabbitmqctl2.sudo /usr/sbin/rabbitmqctl status出现Status of node rabbit@ubuntu...即为成功启动节点1.which rabbitmqctl 例如-> /usr/sbin/rabbitmqctl2.sudo /usr/sbin/rabbitmq-server如果启动失败了,请直接查看日志文件,一般日志文件存放在/var/log/rabbitmq下日志的文件名字为:rabbit@[hostname].log,其中rabbit为默认Erlang节点的名字,而hostname即为当前的主机名字。以后台进程的方式运行(安装成功后默认)1.which rabbitmqctl 例如-> /usr/sbin/rabbitmqctl2.sudo /usr/sbin/rabbitmq-server -detached关闭节点(永远不要使用KILL来停止RabbitMQ服务器,推荐使用下面的命令来停止RabbitMQ服务器)1.which rabbitmqctl 例如-> /usr/sbin/rabbitmqctl2.sudo /usr/sbin/rabbitmqctl stop注意:此时不仅关闭了Rabbit应用程序,同时也关闭了Erlang节点。有时只想关闭Rabbit应用程序,而保留Erlang节点继续为其他程序服务(特别是在集群或分布式环境中,一个Erlang系欸但上可能同时运行着其他Erlang程序,这样的关闭节点是不可取的)此时需要使用sudo ./rabbitmqctl stop_app 即可只关闭运行着的Rabbit 程序用户管理查看当前所有存在的用户列表sudo /usr/sbin/rabbitmqctl list_users

(Celery http://docs.celeryproject.org/en/latest/getting-started/brokers/rabbitmq.html#broker-rabbitmq)1.创建RabbitMQ用户sudo rabbitmqctl add_user myuser mypassword2.添加IPsudo rabbitmqctl add_vhost myvhost3.添加标签 查看所有存在的用户列表是 [ ] 里面的内容(详细见下面用户角色)sudo rabbitmqctl set_user_tags myuser mytag4.添加权限(-p 代表set_permissions作用在哪个host,三个点分别代表"配置","读","写",*是通配符)sudo rabbitmqctl set_permissions -p myvhost myuser ".*" ".*" ".*"5.删除用户sudo rabbitmqctl add_user delete myuser 6.修改密码sudo rabbitmqctl add_user myuser newpassword替换适当的myuser, mypassword, newpassword及myvhost 值。------------------------------------------------------RabbitMQ 扩展------------------------------------------------------概念说明Broker: 简单来说就是消息队列服务器的实体Exchange: 消息交换机,指定消息按什么规则,路由到哪个队列Queue: 消息队列载体,每个消息都会被投入到一个或多个队列Binding:绑定,它的作用就是把Exchange和Queue 按照路由规则绑定起来Routing Key: 路由关键字,Exchange 根据这个关键字进行消息投递vhost: 虚拟主机,一个broker 里可以开设多个vhost,用作不同用户的权限分离producer:消息生产者,就是投递消息的程序consumer: 消息消费者,就是接收消息的程序channel: 消息通道,在客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务消息队列的使用过程大概如下:1.客户端连接到消息队列服务器,打开一个channel2.客户端声明一个exchange,并设置相关属性3.客户端声明一个queue,并设置相关属性4.客户端使用routing key, 在exchange和queue之间建立好绑定关系5.客户端投递消息到exchange6.exchange接收到消息后,根据消息的key和已经设置的bingding,进行消息路由,将消息投递到一个或多个队列里交换机的类型Direct 完全根据Key 进行投递的交换机Topic 对Key 进行模式匹配后进行投递的交换机 Fanout 不需要Key的交换机,采取广播模式,一个消息进来时,投递到与该交换机绑定的所有队列RabbitMQ的持久化1.exchange的持久化,在声明时指定durable=> 12.queue的持久化,在声明时指定durable=>13.消息持久化,在投递时指定delivery_mode=>2(1是非持久化)

用户角色(managementplugin 管理插件)为用户添加系统预置的角色,为用户赋予角色,则用户也就拥有了所赋予的所有权限了,角色分为:1.超级管理员(administrator)可登录管理控制台(启用managementplugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作2.监控者(monitoring)可登录管理控制台(启用managementplugin的情况下),同时可以查看rabbitmq 节点的相关信息(进程数,内存使用情况,磁盘使用情况等)3.策略制定者(policymaker)可登录管理控制台(启用managementplugin的情况下),同时可以对policy进行管理,但无法查看节点的相关信息4.普通管理者(management)仅可登录管理控制台(启用managementplugin的情况下),无法查看节点信息,也无法对策略进行管理5.其他无法登录管理控制台,通常就是普通的生产者和消费者服务器使用统计使用-p 选项,指定虚拟主机或路径信息,如果不添加该选项,那么rabbitmqctl 会将“/”作为默认的路径访问。查看队列查看默认虚拟机上所有队列列表(或查看指定虚拟机上所有的队列列表 )sudo /usr/sbin/rabbitmqctl list_queues(list_queues -p vhost1)查看属性特征名称:name 队列的名字messages 消息数目consumers 消费者数目memory 内存使用情况durable 是否持久化auto_delete 是否会被系统自动删除查看交换机查看默认虚拟机上所有交换机的信息列表sudo /usr/sbin/rabbitmqctl list_exchanges查看属性特征名称:name 交换机名字type 类型durable 是否持久化auto_delete 是否会被系统自动删除查看绑定到交换机的队列sudo /usr/sbin/rabbitmqctl list_bindings

 

转载于:https://www.cnblogs.com/yungiu/p/10207509.html


最新回复(0)