rabbitmq集群

RabbitMQ基础教程

时光总嘲笑我的痴心妄想 提交于 2019-11-30 21:25:02
下载和安装(3.6版本) rabbitmq和erlang的版本关系,2者版本必须要一致,不然各种问题 https://www.rabbitmq.com/which-erlang.html 我装的rabbitmq的版本是3.6.10 erlang的版本是19.3 下载erlang wget http://erlang.org/download/otp_src_19.3.tar.gz tar -xvf otp_src_19.3.tar.gz cd otp_src_19.3 ./configure --prefix = /opt/soft/erlang make make install 配置环境变量 vim /etc/profile export ERLANG_HOME = /opt/soft/erlang export PATH = $PATH : $ERLANG_HOME /bin source /etc/profile 验证是否正常安装,正常输出版本则正确 [ root@VM_0_14_centos soft ] # erl Erlang / OTP 19 [ erts - 8.3 ] [ source ] [ 64 - bit ] [ smp : 2 : 2 ] [ async - threads : 10 ] [ hipe ] [ kernel - poll : false

ActiveMQ/RabbitMQ/Kafka的区别

ε祈祈猫儿з 提交于 2019-11-30 21:24:17
对于异步消息组件在实际的应用之中会有两类: · JMS:代表作就是 ActiveMQ,但是其性能不高,因为其是用 java 程序实现的; · AMQP:直接利用协议实现的消息组件,其大众代表作:RabbitMQ,高性能代表作:Kafka。 2.实际开发之中 90%环境下常用的三个消息组件:ActiveMQ、RabbitMQ、Kafka 的全部定义都在此处,以后你们所从事的开发 里面一定会有消息组件的身影。消息组件带来的最直观好处:数据缓冲,可以保证消息不丢失。 面试题:请解释一下 ActiveMQ 与 RabbitMQ 区别? · ActiveMQ 使用的是 JMS 协议处理,所以性能比较差,在 ActiveMQ 里面其组成比较简单就是进行主题或者是队列消息的 处理; ·RabbitMQ 使用的是 AMQP 处理,该处理属于一种协议处理,所以处理的性能会比较高,在 RabbitMQ 里面提供有 exchange、 queue、bind 的概念,所有的用户提交的消息发送给 exchange,而后由 bind 绑定 exchange 与 queue,最后根据 routingkey 进行消息 的发送处理,利用这一概念可以实现 fanout(广播)、topic(主题)、direct(直连)的操作处理。同时在 Rabbitmq 之中还通过有虚 拟主机的概念

activemq、rabbitmq、kafka原理和比较

a 夏天 提交于 2019-11-30 21:22:53
一、activemq 虽然是java写的消息队列,但是提供Java, C, C++, C#, Ruby, Perl, Python, PHP各种客户端,所以语言上是没什么问题的。配置和使用,基本上是java xml这一套。同时对jms、spring之类的支持很友好。 而且因为是Java写的,所以可以作为一个jar包,放到java项目里,用代码启动和配置,这个对于java开发者而言是不是相当爽?毕竟还是有些场景,需要我们把队列放到自己项目内部,随项目启动而启动的。而且,还可以类似拓展tomcat一样,自己写java的plugin来拓展activemq。比如说,我有10万硬件连到mq上,这10万设备每个都有用户名密码,这个时候我们可以用java写个权限验证,从数据库里查这10万用户名密码。 activemq支持主从复制、集群。但是集群功能看起来很弱,只有failover功能,即我连一个失败了,可以切换到其他的broker上。这一点貌似不太科学。假设有三个broker,其中一个上面没有consumer,但另外两个挂了,消息会转到这个上面来,堆积起来。看样子activemq还在升级中。 activemq工作模型比较简单。只有两种模式 queue,topics 。 queue就多对一,producer往queue里发送消息,消费者从queue里取,消费一条,就从queue里移除一条

消息中间件ActiveMQ、RabbitMQ、RocketMQ、ZeroMQ、Kafka如何选型?

戏子无情 提交于 2019-11-30 21:22:19
最近要为公司的消息队列中间件进行选型,市面上相关的开源技术又非常多,如ActiveMQ、RabbitMQ、ZeroMQ、Kafka,还有阿里巴巴的RocketMQ等。 这么多技术,如何进行选型呢? 首先对于阿里的RocketMQ,因为是阿里开源的,对于国内开源的保持谨慎的态度,暂时不采取该中间件。 所以只能在ActiveMQ、RabbitMQ、ZeroMQ、Kafka中间选一款作为消息队列中间件。 下面从几个维度来对比下 1、社区活跃度 从目前网上的资料上看,RabbitMQ、activeMQ、ZeroMQ三者中RabbitMQ绝对是首选。 2、消息持久化 ZeroMq不支持消息持久化,ActiveMQ和RabbitMQ都支持。 3、核心技术 可靠性、灵活的路由、集群、事务、高可用的队列、消息排序、问题追踪、可视化管理工具、插件系统等等。 RabbitMq / Kafka最好,ActiveMQ次之,ZeroMQ最差。当然ZeroMQ也可以做到,不过自己必须手动写代码实现,工作量不小。尤其是可靠性中的:持久性、投递确认、发布者证实和高可用性。 4、高并发 毋庸置疑RabbitMQ最高,因为RabbitMQ是由天生具备高并发高可用特性的erlang语言实现的。 以上对比参考来源网络,大同小异。总结就是需要从RabbitMQ和Kafka之间选一款适合自己的

RabbitMQ实战

最后都变了- 提交于 2019-11-30 21:19:13
第2章 理解消息通信 2.2 此底部开始构造:队列 信道(channel)是建立在TCP连接上的虚拟连接。因为如果每个生产者/消费者都使用真实的TCP连接的话,每一个线程连接到RabbitMQ,都会建立一个TCP连接,不仅会造成TCP连接的巨大浪费(创建和销毁TCP回话开销很大),而且操作系统每秒也就只能建立这点数量的连接,很快就会碰到性能瓶颈。 如图,一条电缆(TCP连接)有许多光纤束(信道),运行所有连接的线程通过多条光纤束同时进行传输和接收。 当一个RabbitMQ队列有多个消费者时,队列收到的消息将以循环的方式发送给消费者,每个消息只发送给一个订阅的消费者。 消费者接收到的每一条消息都必须进行确认 或者在订阅到队列的时候讲auto_ack参数设置为true 当设置了auto_ack时,一旦消费者接收消息,RabbitMQ会自动视其确认了消息。消费者通过确认命令告诉RabbitMQ它已经正确接收了消息,此时RabbitMQ才能安全地把消息从队列中删除。 如果消费者收到一条消息,但是确认之前从Rabbit断开连接(或者从队列上取消了订阅),RabbitMQ会认为这条消息没有分发, 然后重新分发给下一个订阅的消费者 。另一方面,如果消费者没有确认消息, Rabbit讲不会给该消费者发送更多消息 ,这是因为在上一条消息被确认之前,Rabbit会认为这个消费者没有准备好接收下一条消息

RabbitMQ 实战教程

耗尽温柔 提交于 2019-11-30 21:18:28
1、简介 MQ(Message Queue)消息队列,用于应用系统解耦、消息异步分发。 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。 其优点如下。 1)Reliability-可靠性高。 2)Flexible Routing-路由灵活。 3)Clustering-支持集群。 4)Federation-支持互联。 5)Tracing-便于追踪。 本文档是关于RabbitMQ的安装与使用实践。 实践环境:Window7 x64系统。 2、Erlang安装 RabbitMQ由ERLANG实现,故需要安装Erlang。 1)下载Erlang 下载官网: http://www.erlang.org/download.html 。 实践安装版本:otp_win32_17.4.exe。 2)安装Erlang 运行Exe按照提示一路Next安装下来。 3)配置Erlang 本机安装目录:C:\Program Files (x86)\erl6.3。 环境变量Path中添加C:\Program Files (x86)\erl6.3\bin。 4)检测Erlang 命令行中输入erl命令可检测Erlang是否安装成功。 3、RabbitMQ安装 对应RabbitMQ的版本为V3.4.3。 1)下载RabbitMQ 对应官网: http://www.rabbitmq.com

RabbitMQ系列

♀尐吖头ヾ 提交于 2019-11-30 21:06:05
关于RabbitMQ,感觉可以说的地方太多太多了。所以突然觉得还是写成一个系列的文档说明。主要还是自己对队列的一些理解。说到RabbitMQ,首先就要说起,什么是消息队列,还有我们为什么需要使用消息队列,即消息队列的应用场景。 消息队列(Message Queue,简称 MQ) 在计算机科学中,消息队列(英语:Message queue)是一种进程间通信或同一进程的不同线程间的通信方式,软件的贮列用来处理一系列的输入,通常是来自用户。消息队列提供了异步的通信协议,每一个贮列中的纪录包含详细说明的数据,包含发生的时间,输入设备的种类,以及特定的输入参数,也就是说:消息的发送者和接收者不需要同时与消息队列互交。消息会保存在队列中,直到接收者取回它。 – 维基百科 以上是维基百科的说明,更多需要了解说明的我觉得可以自行谷歌,百度。我觉得这边只需要理解三个词就足够了, 消息发送者、队列、接受者。 在此顺便说明下同步与异步,我觉得同步和异步就是我告诉你一件事你立即回应我,这就是同步。而相对应我告诉你一件事你说等会你给我个地址我待会找你回答你。这就是异步。 应用场景 – 为什么需要使用消息队列 异步处理 场景说明:用户邮件注册流程 传统方式: 用户 -> 用户注册 -> 注册信息写入数据库(50ms) -> 发送注册邮件(50ms) <- 响应返回用户结果(100ms) 消息队列: 用户 ->

RabbitMQ进阶

你离开我真会死。 提交于 2019-11-30 21:05:40
1、RabbitMQ消息何去何从 channel.basicPublish方法两个参数,mandatory和immediate,他们都有当消息传递过程不可达到目的地时会将消息返回给生产者的功能 mandatory参数 当mandatory参数设为true时,交换器无法根据自身的类型和路由键找到一个符合条件的队列,那么RabbitMQ会调用Basic.Return命令将消息返回给生产者。当mandatory参数设置为false时,出现上述情形,则消息直接被丢弃。RabbitMQ提供的备份交换器(Alternate Exchange)可以将未能被交换器路由的消息(没有绑定队列或没有匹配的绑定)存储起来,不返回给客户端 使用mandatory参数的关键代码 channel . basicPublish ( EXCHANGE_NAME , "" , true , MessageProperties . PERSISTENT_TEXT_PLAIN , "mandatory test" . getBytes ( ) ) ; channel . addReturnListener ( new ReturnListener ( ) { public void handleReturn ( int replyCode , String replyText , String exchange ,

消息中间件之RabbitMQ

旧街凉风 提交于 2019-11-30 21:03:59
一、RabbitMQ简介 1、简介 RabbitMQ是一个遵循AMQP协议的消息中间件,它从生产者接收消息并递送给消费者,在这个过程中,根据规则进行路由,缓存与持久化。 基于erlang语言开发具有高可用高并发的优点,适合集群服务器 可靠性:包括消息持久化,消费者和生产者的消息确认 灵活路由:遵循AMQP协议,支持多种Exchange类型实现不同路由策略 分布式:集群的支持,包括本地网络与远程网络 高可用性:支持主从备份与镜像队列 多语言支持:支持多语言的客户端 WEB界面管理:可以管理用户权限,exhange,queue,binding,与实时监控 访问控制:基于vhosts实现访问控制 调试追踪:支持tracing,方便调试 开源免费 【较其他MQ】 - Apache ActiveMQ 比较出名,但是有丢失消息的风险。 - ZeroMQ延迟很低、支持灵活拓扑,但是不支持消息持久化和崩溃恢复 2、核心概念 producer:消息生产者,就是投递消息的程序 consumer:消息消费者,就是接受消息的程序 Message是RabbitMQ中的消息体 Broker:简单来说就是消息队列服务器实体 channel:消息通道,在客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务 Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列

Centos7 安装rabbitmq详细教程

ぃ、小莉子 提交于 2019-11-30 20:48:41
一、RabbitMQ简单介绍 RabbitMQ就是当前最主流的消息中间件之一。RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。 在目前分布式的大环境下,成为非常常用的消息队列,以下详细说明怎么在centos7 上安装部署rabbitmq,并列举简单的维护,方便运维同学能更好的维护rabbitmq的正常运行。由于一般生产环境,不管是erlang还是 rabbitmq都不能随便进行版本升级,每次升级都是要谨慎的,所以这里推荐都使用源码安装,这样就固定了版本,不会出现通过yum安装的话,不小心升级了版本导致服务故障等的问题。当然yum安装会更简单,这里就不做介绍,有兴趣的参考官方文档即可。 二、Centos7下安装rabbitmq rabbitmq是erlang语言编写的,安装rabbitmq之前,需要先安装erlang,这里用erlang的源码进行安装,erlang安装包官网下载地址: http://erlang.org/download/ wget http://erlang.org/download/otp_src_21.1.tar.gz