RabbitMQ

rabbitMQ 6种工作模式

…衆ロ難τιáo~ 提交于 2020-02-08 21:44:16
1 simple简单模式 消息产生着将消息放入队列 消息的消费者(consumer) 监听(while) 消息队列,如果队列中有消息,就消费掉,消息被拿走后,自动从队列中删除(隐患 消息可能没有被消费者正确处理,已经从队列中消失了,造成消息的丢失)应用场景:聊天(中间有一个过度的服务器;p端,c端) 2 work工作模式(资源的竞争) 消息产生者将消息放入队列消费者可以有多个,消费者1,消费者2,同时监听同一个队列,消息被消费?C1 C2共同争抢当前的消息队列内容,谁先拿到谁负责消费消息(隐患,高并发情况下,默认会产生某一个消息被多个消费者共同使用,可以设置一个开关(syncronize,与同步锁的性能不一样) 保证一条消息只能被一个消费者使用) 应用场景:红包;大项目中的资源调度(任务分配系统不需知道哪一个任务执行系统在空闲,直接将任务扔到消息队列中,空闲的系统自动争抢) 3 publish/subscribe发布订阅(共享资源) X代表交换机rabbitMQ内部组件,erlang 消息产生者是代码完成,代码的执行效率不高,消息产生者将消息放入交换机,交换机发布订阅把消息发送到所有消息队列中,对应消息队列的消费者拿到消息进行消费 相关场景:邮件群发,群聊天,广播(广告) 4 routing路由模式 消息生产者将消息发送给交换机按照路由判断,路由是字符串(info)

windows安装rabbitMQ

為{幸葍}努か 提交于 2020-02-08 12:52:03
简介: rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rabbit MQ 是建立在Erlang OTP平台上。 windows安装: Erlang快速下载: https://www.erlang-solutions.com/resources/download.html 国内加速下载 rabbitMQ server: https://www.newbe.pro/Mirrors/Mirrors-RabbitMQ/ 安装完成后添加环境变量,erlang的sbin路径和rabbitmq的bin路径 安装插件:rabbitmq-plugins.bat enable rabbitmq_management 启动rabbitmq:rabbitmq-server.bat 管理后台: http://localhost:15672 ,用户名:guest 密码:guest 来源: https://www.cnblogs.com/aaron-agu/p/12275915.html

kafaka,activityMQ,rabbitMQ消息中间件对比

泪湿孤枕 提交于 2020-02-08 03:47:16
kafaka,activityMQ,rabbitMQ消息中间件对比 说明 本次测试,使用kafaka,activityMQ,rabbitMQ消息中间件进行对比,均采用一个消息队列,测试中间件在收发消息时时延。 测试前置条件 1.消费者端只配置一个消费者来消费数据。 2.多线程才用jmeter通过http请求来进行测试。 3.actitvityMQ在1000线程100次时,时延太大,受制于电脑性能未测试。 测试结果 结论 从结果上来看,在消息发送方面,kafak的效率较高,rabbitMQ次之,activityMQ最慢;在消息处理时延方面单线程情况下activityMQ的效率较高,kafak次之,rabbitMQ最慢,但考虑到activityMQ发送较慢,队列中堆积消息少,故处理时延较小,参考性不强;在多线程方面kafak处理较快,rabbitMQ次之,activityMQ最慢。在消息可靠性方面在测试10万条消息时均未发现消息丢失问题,但阅读资料kafak会有少量丢消息的情况存在。结合业务方面考虑,在需要消息可靠保证的需求可以采用rabbitMQ,例如:计划下达生产,控投等业务。对于吞吐量高,但对于可靠性要求不是太高的可以采用kafak,例如记录日志的消息。 来源: CSDN 作者: Asia1752 链接: https://blog.csdn.net/Asia1752

CentOS7安装RabbitMQ

烂漫一生 提交于 2020-02-08 01:34:33
环境:虚拟机镜像安装CentOS-7-x86_64-DVD-1511.iso Linux升级命令有两个分别是yum upgrade和yum update, 这个两个命令是有区别的: yum -y update 升级所有包同时也升级软件和系统内核 yum -y upgrade 升级所有包不升级升级软件和系统内核 第一步、将数据源更换为阿里云软件源 1.下载数据源 下载到root目录下 wget http://mirrors.aliyun.com/repo/Centos-7.repo 2.备份数据源 /etc/yum.repos.d/目录下 备份文件为/etc/yum.repos.d/CentOS-Base.repo.bak mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak 3.复制新数据源 cp /root/Centos-7.repo /etc/yum.repos.d/ mv /etc/um.repos.d/Centos-7.repo /etc/um.repos.d/Centos-Base.repo 4.更新数据源 yum clean all yum makecache yum -y update 第二步、安装erlang 安装erlang依赖 yum update yum

mac部署PHP RabbitMQ环境

夙愿已清 提交于 2020-02-07 02:22:30
一、安装rabbitmq brew install rabbitmq 二、安装rabbitmq-c git clone git://github.com/alanxz/rabbitmq-c.git cd rabbitmq-c mkdir build && cd build cmake -DCMAKE_INSTALL_PREFIX=/usr/local .. cmake --build . --target install 出现错误: -- Could NOT find POPT (missing: POPT_INCLUDE_DIR POPT_LIBRARY) -- Could NOT find XMLTO (missing: XMLTO_EXECUTABLE) -- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) CMake Error at /usr/local/Cellar/cmake/3.6.1/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:148 (message): Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable

RabbitMQ--运行机制

Deadly 提交于 2020-02-07 02:20:00
AMQP中的消息路由 AMQP中消息的路由过程和Java开发者熟悉的JMS存在一些差别,AMQP中增加了 Exchange和Binding 的角色。生产者把消息发布到Exchange上,消息最终到达队列并被消费者接收,而Binding决定交换器的消息应该发送到那个队列。 Exchange类型 Exchange分发消息时根据类型的不同分发策略有区别,目前共有4中类型: direct、fanout、topic、headers 。 headers匹配AMQP消息的header而不是路由键,headers交换器和direct交换器完全一致,但性能差很多,目前几乎用不到了,所以直接看另外三中类型。 Direct Exchange: 消息中的路由键(routing key)如果和Binding中的binding key一致,交换器将消息发到对应的队列中。路由键与队列名完全匹配,如果一个队列绑定到交换机要求路由键为"dog",则只转发routing key 标记为"dog"的消息,不会转发"dog.puppy",也不会转发"dog.guard"等等。它是完全匹配、单播的模式。 Fanout Exchange: 每个发到fanout类型交换器的消息都会分到所有绑定的队列上去。fanout交换器不处理路由键,只是简单的将队列绑定到交换器上,每个发送到交换器的消息都会被转发到与该交换器绑定的所有队列上

SpringBoot+RabbitMQ ,保证消息100%投递成功并被消费(附源码)

为君一笑 提交于 2020-02-06 18:13:18
一、先扔一张图 说明: 本文涵盖了关于RabbitMQ很多方面的知识点, 如: 消息发送确认机制 消费确认机制 消息的重新投递 消费幂等性, 等等 这些都是围绕上面那张整体流程图展开的, 所以有必要先贴出来, 见图知意 二、实现思路 简略介绍163邮箱授权码的获取 编写发送邮件工具类 编写RabbitMQ配置文件 生产者发起调用 消费者发送邮件 定时任务定时拉取投递失败的消息, 重新投递 各种异常情况的测试验证 拓展: 使用动态代理实现消费端幂等性验证和消息确认(ack) 三、项目介绍 springboot版本2.1.5.RELEASE, 旧版本可能有些配置属性不能使用, 需要以代码形式进行配置 RabbitMQ版本3.7.15 MailUtil: 发送邮件工具类 RabbitConfig: rabbitmq相关配置 TestServiceImpl: 生产者, 发送消息 MailConsumer: 消费者, 消费消息, 发送邮件 ResendMsg: 定时任务, 重新投递发送失败的消息 说明: 上面是核心代码, MsgLogService mapper xml等均未贴出, 完整代码可以参考GitHub上的源码,地址在文末。 四、代码实现 1.163邮箱授权码的获取, 如图: 该授权码就是配置文件spring.mail.password需要的密码 2.pom < ! -- mq --

rabbit-mq 本地环境搭建记录

丶灬走出姿态 提交于 2020-02-06 09:16:18
以下五步转自: https://blog.csdn.net/shushugood/article/details/81076917 部分内容稍有修改。 一、安装RabbitMQ需要先安装Erlang语言开发包 下载地址 https://www.erlang.org/downloads 本文下载的是 22.2版本 。下载安装完成后(例如安装在E:\erl10.6下) 需要添加环境变量 ERLANG_HOME=E:\erl10.6 之后在Path中添加 %ERLANG_HOME%\bin 二、安装RabbitMQ Server 下载地址 https://www.rabbitmq.com/download.html 本文下载的是 3.8.2版本 。下载完成后(例如安装在E:\RabbitMQ Server\rabbitmq_server-3.8.2)添加环境变量RABBITMQ_SERVER=E:\RabbitMQ Server\rabbitmq_server-3.8.2 在path中添加 %RABBITMQ_SERVER%\sbin 三、以管理员身份运行cmd.exe,进入目录 E:\RabbitMQ Server\rabbitmq_server-3.8.2\sbin(RabbitMQ Server安装目录),运行cmd命令:rabbitmq-plugins.bat enable

Proper use of SpringRabbit DirectMessageListenerContainer and setConsumersPerQueue property

﹥>﹥吖頭↗ 提交于 2020-02-06 08:08:55
问题 I use the DirectMessageListenerContainer to listen to individual queues, since it creates a consumer per queue , preventing queue starvation if a messages on say "queue1" take a while to process, while the one on "queue2" are quick to process. I am confused about the DirectMessageListenerContainer.setConsumersPerQueue method. The default value is 1 looking at the source code. Under what conditions would one need to increase it to greater than 1? If left to default value of 1, is the

Proper use of SpringRabbit DirectMessageListenerContainer and setConsumersPerQueue property

限于喜欢 提交于 2020-02-06 08:08:33
问题 I use the DirectMessageListenerContainer to listen to individual queues, since it creates a consumer per queue , preventing queue starvation if a messages on say "queue1" take a while to process, while the one on "queue2" are quick to process. I am confused about the DirectMessageListenerContainer.setConsumersPerQueue method. The default value is 1 looking at the source code. Under what conditions would one need to increase it to greater than 1? If left to default value of 1, is the