| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> RabbitMQ -> 正文阅读 |
|
[系统运维]RabbitMQ |
目录 ? 交换空间(交换机:Exchange)控制队列,一个交换机可以控制多个队列; queue:数据队列; routingKey:如果所有队列的routingKey都一样,则是广播模式,如果不一样则是点对点模式; ?vhost:虚拟主机,可以在同一个消息服务中用vhost划分不同的区域,各个区域完全独立;可以更好的实现权限和用户管理工作 启动? ? ? ? 需要在linux中安装并启动 1、启动rabbitMQ-server 2、默认情况下RabbitMQ启动的时候是不启动webserver的,需要启动rabbitMQ-plugins ?启动了一个webserver之后,可以直接在浏览器中访问ip:15672;(自带监控-页面) 队列创建1、通过管理页面来创建消息保存类型:持久化是如果服务宕机重启后没有被消费的消息还在,瞬时状态是如果消息还没有被消费服务宕机后重启后消息就不存在了; 自动删除:消息被消费后消息是否自动删除; 生产者代码?消费者1、代码2、应答机制如果配置了该机制,消费者取走消息之后会告诉服务器,此时服务器就可以将消息删除掉了; 2、1优点 ? ? ? ? 消息的可靠性提高 2.2缺点 ? ? ? ? 性能有所影响 2.3代码 ?工作队列普通队列消息:当有一个生产者和多个消费者时,多个消费者公共消费同一个生产者的消息;自动进行负载均衡设计;--保证消费消息的速度 消息持久化如果要持久化数据,如要添加如下参数 ?虚拟主机用户可以创建自己的虚拟主机,如果不指定则会为默认的虚拟主机;每个虚拟主机里有自己的队列信息; 1、通过控制台创建(创建虚拟主机并为其追加用户),只有被分配的用户才能操作该虚拟主机; 2、通过命令行 ?3、代码设置虚拟主机 ?发布与订阅模式????????消息系统中除了有队列消息外一定会有主题消息, ????????主题消息:同一条消息可以被主题下所有的消费者消费--是由exchange控制; ????????exchange:1、接收生产者生产的消息;2、负责向队列进行消息推送; ????????exchange类型:topic、director?、fanout; fanout:广播模式? ? ? ? 一条消息被所有的消费者消费(问题:不同虚拟机呢?) ? ? 代码 1、此时生产者就不需要队列信息了,而是将消息发送到交换机中,如下修改 ?2、消费者代码修改,消费者还是需要从队列中获取消息,所有要绑定如有和队列然后消费; ?以上进行绑定处理时,routingKey要保证一致,不然接收不到消息; 直连模式(director?)代码 生产者 消费者 ?主题模式主题模式也相当于一种广播模式,只要控制好exchange和routingKey就相当于实现了所以的处理模式; 实现方式都差不多 代码 生产者 消费者 ?总结? ? ? ? 几种模式只要控制好exchange和routingKey就相当于实现了所以的处理模式;也是常见的使用模式; 集群? ? ? ? rabbitMQ集群本身不带有HA和负载功能,如果想要实现HA需要使用其他组件,如:HAProxy、LVS、keepalived等组件; ????????集群设计分为两类:普通集群、镜像队列 基础集群1、必须保障所有主机的erlang.cookie信息一致(目录为:~/.erlang.cookie) 2、启动所有机器的rabbitMQ服务 3、配置集群(主从服务配置) 3.1停止掉主服务外的所有服务的app服务(只停止app服务,rabbitMQ没有停止) ?3.2从服务器添加主服务器信息 3.3启动从服务器的app 3.4查看主服务集群状态 ?可以看到有三台服务器,配置过程有点像redis主从配置; 4、添加一个新的用户并为其设置到管理员组 ? ? ? ? 在主服务器上执行即可 ?5、程序在配置rabbitMQ地址时,信息只能的主服务器地址; 镜像队列但rabbitMQ没有HA和负载功能,所以需要借助其他组件来实现,镜像队列只是保证了集群不同主机的消息一致性, ? 总结????????RabbitMQ没有HA和负载功能,集群中如果主服务挂掉,则消息就不能被消费了,即便其他主机没有挂掉,如果要实现HA则需要借助其他组件,如HAProxy、LVS、keepalived等组件; ? 注: 1、普通队列模式下,生产者将消息发送到了队列中; 2、广播模式下,生产者将消息发送到交换机中;exchange通过绑定交换机和key来实现消息分发; 问题: 1、消息重复消费问题 2、直连模式如果有多个消费者的key相同,会同时消费同一条消息吗?如果可以那和广播模式有什么区别呢? 3、基础集群是主从吗?机制是什么如果主服务挂掉后怎么运行呢? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 19:37:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |