RabbitMQ

Rabbitmq之Socket descriptors

拜拜、爱过 提交于 2020-03-07 19:02:39
rabbitmq最大连接数(Socket Descriptors), RabbitMQ的socket连接数(socket descriptors)是文件描述符(file descriptors,fd)的一个子集 。 也就是说, RabbitMQ能同时打开的最大连接数和最大文件句柄数(文件系统,管道)都是受限于操作系统关于文件描述符数量的设置,两者是此消彼长的关系。 初始时,可用socket描述符与可用fd数量的比率大概在0.8-0.9左右,这个值并不固定,当socket描述符有剩余时, RabbitMQ会使用尽量多的文件描述符用于磁盘文件读写。随着服务器建立越来越多的socket连接,文件句柄开始回收,数量减少。 总之,RabbitMQ会优先将文件描述符用于建立socket连接,宁可牺牲频繁打开/关闭文件带来的磁盘操作性能损耗, 这种取舍很容易理解,作为网络服务器,当然优先保障网络吞吐率了。因此,对于高并发连接数的多队列读写时,队列性能会稍微差那么一点,比如用RabbitMQ做RPC。 当服务器建立的socket连接已经达到限制(sockets_limit)时,服务器不再接受新连接。这里要区分清楚,RabbitMQ不再接收的是AMQP连接,而不是传输层的TCP连接, 参考链接: https://blog.csdn.net/huoyunshen88/article/details

RabbitMQ安装配置

若如初见. 提交于 2020-03-07 13:34:14
1. 以ubuntu安装为例 # sudo apt-get install erlang-nox # sudo apt-get install rabbitmq-server 2. RabbitMQ状态管理 # sudo service rabbitmq-server start   # 启动rabbitmq服务 # sudo service rabbitmq-server stop   # 关闭rabbitmq服务 # sudo service rabbitmq-server restart # 重启rabbitmq服务 # sudo service rabbitmqctl status     # 查看rabbitmq服务状态 3.RabbitMQ可以直接使用命令行操作,也可以使用自带的web界面 # 安装启动插件 # sudo rabbitmqctl start_app # sudo rabbitmq-plugins enable rabbitmq_management 然后就可以通过http://xxx.xxx.xxx.xxx:15672访问web端了,出入用户名和密码,默认用户名密码是guest/guest。如果访问登录失败说明没有开启超级管理员登录。 创建用户: # sudo rabbitmqctl add_user admin admin1234           

RabbitMQ学习(2)(工作队列)

五迷三道 提交于 2020-03-07 06:09:48
工作队列 在第 一个教程中, 我们编写了用于从命名队列发送和接收消息的程序。 在这一个中,我们将创建一个 工作队列 ,用于在多个工作人员之间分配耗时的任务。 工作队列(又名: 任务队列 ) 背后的主要思想 是避免立即执行资源密集型任务,必须等待完成。 相反,我们安排稍后完成任务。 我们把一个 任务 封装 成一个消息并发送给一个队列。 在后台运行的工作进程将弹出任务并最终执行作业。 当你运行许多工人时,任务将在他们之间共享。 这个概念在Web应用程序中特别有用,在短的HTTP请求窗口中不可能处理复杂的任务。 默认情况下,RabbitMQ将按顺序将每条消息发送给下一个使用者。 平均而言,每个消费者将获得相同数量的消息。 这种分发消息的方式称为循环法(round-robin)。 试试三个或更多的工人。 消息确认 做任务可能需要几秒钟的时间。 你可能会想知道如果其中一个消费者开始一个长期的任务,并且只是部分完成而死亡会发生什么。 使用我们当前的代码,一旦RabbitMQ向客户发送消息,立即将其标记为删除。 在这种情况下,如果你杀了一个工人,我们将失去刚刚处理的信息。 我们也将失去所有派发给这个特定工作人员但尚未处理的消息。 但我们不想失去任何任务。 如果一名工人死亡,我们希望将任务交付给另一名工人。 为了确保消息永不丢失,RabbitMQ支持 消息 确认 。 消费者发回确认(告知

.NET Core使用RabbitMQ

为君一笑 提交于 2020-03-06 16:02:13
原文转自: https://www.cnblogs.com/linhuiy/p/12017453.html 最近项目组兄弟在使用Rabbit MQ,但是在使用过程中发现消息队列里面的数据偶尔会产生串联,根据经验判定应该是消息队列使用模式有问题,于是就找到此篇文章。 RabbitMQ简介  RabbitMQ是一个开源的,基于AMQP(Advanced Message Queuing Protocol)协议的完整的可复用的企业级消息队,RabbitMQ可以实现点对点,发布订阅等消息处理模式。 RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持Linux,windows,macOS,FreeBSD等操作系统,同时也支持很多语言,如:Python,Java,Ruby,PHP,C#,JavaScript,Go,Elixir,Objective-C,Swift等。 RabbitMQ安装 我使用的环境是ubuntu18.04, RabbitMq需要Erlang语言的支持,在安装RabbitMq之前需要安装Erlang sudo apt-get install erlang-nox 更新源 sudo apt-get update 安装RabbitMq sudo apt-get install rabbitmq-server 添加users用户,密码设置为admin

RabbitMQ 资源整理

戏子无情 提交于 2020-03-06 11:09:30
参考 Windows下RabbitMQ安装及配置 消息中间件的使用场景 RabbitMQ教程 记录 消息的确认模式 消费者从队列中获取消息,服务端如何知道消息已经被消费呢? 模式1:自动确认 只要消息从队列中获取,无论消费者获取到消息后是否成功消息,都认为是消息已经成功消费。 模式2:手动确认 消费者从队列中获取消息后,服务器会将该消息标记为不可用状态,等待消费者的反馈,如果消费者一直没有反馈,那么该消息将一直处于不可用状态。 手动模式: 自动模式: 来源: CSDN 作者: chrislin9 链接: https://blog.csdn.net/qq_31964019/article/details/104689760

详解RabbitMQ安装过程

不羁的心 提交于 2020-03-06 11:01:31
场景 消息队列已成为分布式系统必要组件,在很多场景下均有广泛应用,通过消息队列可将微服务解耦,拓展了架构思路和可行方案。 常用的消息队列很多,SpringCloud默认支持的有RabbitMQ及Kafka,今天介绍下RabbitMQ的安装过程。 安装Erlang RabbitMQ是使用Erlang开发的,所以需要先安装Erlang,打开网页: https://www.erlang.org/downloads ,选择windows版本下载即可。 安装过程乏善可陈,一直下一步就可以了,此处不再截图。当然兄弟你要想改下安装位置还是可以的哈哈。 安装完毕后配置下环境变量 ERLANG_HOME配置为安装目录:`D:\develop\erl10.6 PATH追加 ;%ERLANG_HOME%\bin 最后,命令行输入erl验证是否安装成功,如下图表示成功: 安装RabbitMQ 打开网页 http://www.rabbitmq.com/download.html ,选择windows版本下载 下载后直接下一步下一步安装即可。 启动 从命令行选择 RabbitMQ Command Promt ,启动命令行管理工具。 输入命令 rabbitmq-plugins enable rabbitmq_management 即可启动RabbitMQ如下图: 使用 在浏览器地址栏输入 http://127

Spring Boot的消息之旅(一)

∥☆過路亽.° 提交于 2020-03-06 02:00:03
1.什么是消息队列? 消息队列,英文名message queue,简称MQ。MQ是一种应用程序对应用程序的通讯方法。消息队列是分布式应用中不可或缺的组件,主要解决应用解耦、异步消息、流量削峰等问题,实现高性能、高可用、可伸缩和最终一致性的架构。常用的有RabbitMQ、Kafka、ActiveMQ、RocketMQ等。 2.RabbitMQ 2.1 RabbitMQ的几种角色 RabbitMQ是一个消息代理,它的工作是接收、存储和发送消息(Message)这种二进制数据。 下面是RabbitMQ和消息所涉及的一些术语: ·生产(Producing):意思就是发送。发送消息的程序就是生产者(Producer),用P表示。 ·队列(Queue):消息虽然经过了RabbitMQ和应用程序,但它只能存储在队列中。实质上,队列就是一个巨大的消息缓冲区,大小只受主机内存和硬盘限制。 ·消费(Consuming):消费和接收(receiving)是一个意思,就是等待获取消息的程序。用C表示。 2.2 RabbitMQ的几种模式 2.2.1 简单模式 点对点消息发送,这种模式多用于聊天场景。如图: 2.2.2 工作队列模式 一个消息发送给多个消费者,多用于资源调度和抢红包等场景。如图: 2.2.3 订阅模式 生产者( Producer)只需要把消息发送给一个交换机( Exchange)

PerfTest对RabbitMQ进行压力测试

巧了我就是萌 提交于 2020-03-05 21:17:11
下载地址: 官网地址: http://www.rabbitmq.com/java-tools.html 下载后进行解压即可: 使用方式 runjava com.rabbitmq.perf.PerfTest --help usage: <program> -?,--help show usage -a,--autoack auto ack -A,--multi-ack-every <arg> multi ack every -ad,--auto-delete <arg> should the queue be auto-deleted, default is true -b,--heartbeat <arg> heartbeat interval -B,--body <arg> comma-separated list of files to use in message bodies -bc,--body-count <arg> number of pre-generated message bodies. Use with --json-body. Default is 100. -bfc,--body-field-count <arg> number of pre-generated fields and values for body. Use with --json

学习RabbitMQ记录!

若如初见. 提交于 2020-03-05 21:07:26
一,什么是RabbitMQ ? AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。 AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。 RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。 二 ,RabbitMQ 的推送流程 简单来说就是 消息生产者 发送消息给交换机,交换机找到和他绑定的队列 -》找到是否有消费者在监听这个队列,有就把消息发送过去。 exchanges 交换机的几种类型: 路由键介绍:队列和交换金绑定时候的一种标识。通过这个标识当我们发送信息给交换机时候带着这个路由键,系统就能够找到这个路由键下的队列。 Direct Exchage 直连型的交换机,(只发送给对应的路由键下的队列) fanoutExchage 扇形交换机 (无视路由键会发送给所有绑定在这个交换机上的队列) topic exchange

Ubuntu 中 RabbitMq 的安装与运行

↘锁芯ラ 提交于 2020-03-05 18:41:51
安装RabbitMq 可以参照RabbitMq官网的安装教程(Installing on Debian and Ubuntu),来进行安装。 这里我们使用apt-get来安装,就简单的几条命令: 1.由于rabbitMq需要erlang语言的支持,在安装rabbitMq之前需要安装erlang,执行命令: sudo apt-get install erlang-nox # 安装erlang erl # 查看relang语言版本,成功执行则说明relang安装成功 2.添加公钥 wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add - 3.更新软件包 sudo apt-get update 4.安装 RabbitMQ sudo apt-get install rabbitmq-server #安装成功自动启动 5.查看 RabbitMq状态 systemctl status rabbitmq-server #Active: active (running) 说明处于运行状态 # service rabbitmq-server status 用service指令也可以查看,同systemctl指令 执行了上面的步骤,rabbitMq已经安装成功。 6.启用