amqp

RabbitMq(一、安装、设置)

好久不见. 提交于 2020-08-15 02:40:51
1、AMQP与JMS   消息队列实现的主流方式有AMQP(应用层标准消息队列协议,标准为消息中间件设计。主要实现中间件有RabbitMQ)、JMS(Sun公司提供的消息统一操作,类似JDBC这种标准。主要实现中间件有ActiveMQ)。 2、安装与启动RabbitMQ   RabbitMQ是使用Erlang编程语言编写的。安装前必须要 先安装Erlang 。需要 注意 的是Erlang 版本与RabbitMQ 版本需要匹配( https://www.rabbitmq.com/which-erlang.html ),否则会出错。   举例:win系统安装完成后进入 rabbitmq_server\sbin目录,点击rabbitmq-server即可启动。 如图所示,可以通过任务管理器点击服务查看、管理。 在centos中的安装: 1、去官网( https://www.rabbitmq.com/ )下载好安装包后 上传至服务器。 2、安装Erlang    使用yum仓库安装。 1 yum install esl-erlang_17.3-1~centos~ 6_amd64.rpm 2 yum install esl-erlang-compat-R14B-1.el6.noarch.rpm   3、安装RabbitMQ     进入上传安装包的目录,然后输入命令 rpm -ivh

封装php的RabbitMq

℡╲_俬逩灬. 提交于 2020-08-14 13:00:54
简单封装了一个rabbitmq类(业务代码随便写的) 首先是账号密码配置 config.php <?php return $arr = [ 'RabbitMq' => [ // Rabbitmq 服务地址 'host' => '127.0.0.1', // Rabbitmq 服务端口 'port' => '5672', // Rabbitmq 帐号 'login' => 'guest', // Rabbitmq 密码 'password' => 'guest', 'vhost'=>'/' ] ]; 基类 base.php <?php include dirname(__FILE__).'/object.php'; include dirname(__FILE__).'/config.php'; class RabbitMq implements object { //保存类实例的静态成员变量 static private $_instance; static private $_conn; static private $amp ; static private $route = 'key_1'; static private $q ; static private $ex ; static private $queue; public static function

.NET 开源工作流: Slickflow流程引擎高级开发(七)--消息队列(RabbitMQ)的集成使用

你。 提交于 2020-08-14 04:46:23
前言: 工作流流程过程中,除了正常的人工审批类型的节点外,事件类型的节点处理也尤为重要。比如比较常见的事件类型的节点有:Timer/Message/Signal等。本文重点阐述消息类型的节点处理,以及实现消息驱动流程过程中对消息队列(RabbitMQ)的集成使用方式。 1. 节点间消息传递 1.1 MessageThrow 消息抛出节点,当执行到这个节点时,特定消息主题的消息记录将会添加到消息队列,然后等待被订阅的消息消费者来激活消息处理服务。 1.2 MessageCatch 消息接收节点,消息接收节点上定义了消息主题,并且在消息队列中订阅了该主题。当有特定主题的消息被发布时候,消息消费者会捕获到消息主题,同时消息处理服务中,将会定位到流程的该节点位置,然后通过流程服务来判定下一步的流转流转。 1.3 单一流程内的节点消息传递 该流程只进行消息的发布或者接收,而消息的另外一方则可能是业务系统。两者之间的关联是靠消息主题来识别。如下图所示: 1.4 跨流程间的节点消息传递 通常可以用泳道流程来表示跨流程间的消息通知。泳道流程中,有多个流程,其中一个是泳道主流程,其它的则为泳道附属流程。将会在下面的章节中具体描述。 2. 跨流程消息传递 2.1 泳道流程 泳道流程中,使用多个泳道来区分不同的流程,流程之间可以通过消息来传递信息,如下图所示: 2.2 消息节点类型

解决RabbitMQ消息丢失问题和保证消息可靠性(一)

非 Y 不嫁゛ 提交于 2020-08-12 18:31:53
工作中经常用到消息中间件来解决系统间的解耦问题或者高并发消峰问题,但是消息的可靠性如何保证一直是个很大的问题,什么情况下消息就不见了?如何防止消息丢失?下面通过这篇文章,我们就聊聊RabbitMQ 消息可靠性如何解决的? 本文分三部分说明 RabbitMQ 消息丢失场景有哪些? 如何避免消息丢失? 如何设计部署消息中间件保证消息可靠性? RabbitMQ 消息丢失场景有哪些? 首先我们看下消息周期投递过程: 我们把该图分三部分,左中右,每部分都会导致消息丢失情况,下面就详细聊聊每个阶段消息是如何丢的: 1.生产者生产消息到RabbitMQ Server 消息丢失场景 1) 外界环境问题导致:发生网络丢包、网络故障等造成RabbitMQ Server端收不到消息,因为生产环境的网络是很复杂的,网络抖动,丢包现象很常见,下面会讲到针对这个问题是如何解决的。 2) 代码层面,配置层面,考虑不全导致消息丢失 事例1: 一般情况下,生产者使用Confirm模式投递消息,如果方案不够严谨,比如RabbitMQ Server 接收消息失败后会发送nack消息通知生产者,生产者监听消息失败或者没做任何事情,消息存在丢失风险; 事例2: 生产者发送消息到exchange后,发送的路由和queue没有绑定,消息会存在丢失情况,下面会讲到具体的例子,保证意外情况的发生,即使发生,也在可控范围内。 2

软件将决定工业自动化的未来

不打扰是莪最后的温柔 提交于 2020-08-12 14:54:41
在过去的20年中,CPU和网络的性能提高了10,000倍。根据摩尔定律,在未来的20年里,他们将通过提高其他 10,000倍的因素。在当今工业自动化(IA)架构的40年设计生命周期中,计算机的功能将惊人地提高100,000,000倍。很难夸大其词,更多信息尽在振工链。 使用这种权力将决定哪些公司,行业,甚至是经济赢家或输家。对于明天的长寿命系统的当今设计者而言,启用智能软件是唯一重要的因素。 实际上,这已经在发生。在一个又一个的行业中,软件正成为每个系统中最有价值的部分。IA一直是该规则的例外。尽管如此,像自动驾驶汽车和智能医疗系统一样,IA可以使用传感器融合,快速分布式反应和人工智能(AI)来替代具有智能自主性的僵化或手动流程。 正在开发的体系结构旨在解决最近20年的问题,例如重新配置工作单元,小批量,灵活的自动化和供应商互操作性。使用灵活的软件比使用严格的规范更容易解决这些问题。未来属于软件。 苛刻的真相 当今的离散自动化系统使用简单的以硬件为中心的体系结构。可编程逻辑控制器(PLC)通过现场总线连接设备。PLC控制设备并管理与高级软件(如人机界面(HMI)和历史学家)的上游连接。工厂底层软件读取传感器,执行逻辑并驱动执行器,从而在“工作单元”中执行重复操作。工厂由一系列这些工作单元组成,每个工作单元都有几十个设备。 工作单元的编程方式并不多

RabbitMQ,可能有人还不知道是用来干嘛的吧

吃可爱长大的小学妹 提交于 2020-08-12 05:01:51
什么是MQ? MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取队列中的消息。 RabbitMQ就是MQ的一种,本文介绍了使用PHP访问RabbitMQ消息队列的方法,结合实例形式分析了RabbitMQ消息队列的相关扩展安装、队列建立、队列绑定、消息发送、消息接收等相关操作技巧,需要的朋友可以参考下 扩展安装 PHP访问RabbitMQ实际使用的是AMQP协议,所以我们只要安装epel库中的php-pecl-amqp这个包即可 rpm -ivh http://mirror.neu.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm yum install php-pecl-amqp 交换建立 <?php $connection = new AMQPConnection (); $connection -> connect (); $channel = new AMQPChannel ( $connection ); $exchange = new AMQPExchange ( $channel ); $exchange -> setName ( 'exchange1' ); $exchange

MQ消息队列

℡╲_俬逩灬. 提交于 2020-08-11 20:41:38
一、为什么需要消息队列(MQ) 主要原因是由于在高并发环境下,同步请求来不及处理,请求往往会发生阻塞。大量的请求到达访问数据库,导致行锁表锁,最后请求线程会堆积过多,从而触发 too many connection错误,引发雪崩效应。我们使用消息队列,通过异步处理请求,从而缓解系统的压力。核心:异步处理、流量削峰、应用解耦 二、应用场景 异步处理,流量削峰,应用解耦,消息通讯四个场景 2.1、异步处理 场景1:用户注册后,需要发送注册邮件和注册短信。 串行方式:将注册信息写入 数据库 成功后,发送注册邮件,再发送注册短信。以上三个任务全部完成后,返回给客户端 并行方式:将注册信息写入数据库成功后,发送注册邮件的同时,发送注册短信。以上三个任务完成后,返回给客户端。与串行的差别是,并行的方式可以提高处理的时间 假设三个业务节点每个使用50毫秒钟,不考虑网络等其他开销,则串行方式的时间是150毫秒,并行的时间可能是100毫秒。 因为CPU在单位时间内处理的请求数是一定的,假设CPU在1秒内吞吐量是100次。则串行方式1秒内CPU可处理的请求量是7次(1000/150)。 并行方式处理的请求量是10次(1000/100) 小结:如以上案例描述,传统的方式系统的性能(并发量,吞吐量,响应时间)会有瓶颈。如何解决这个问题? 引入消息队列,将不是必须的业务逻辑,异步处理。改造后的架构如下:

spring boot rabbitmq传递bean(实体类)/ JSON

点点圈 提交于 2020-08-11 14:19:37
spring boot使用rabbitmq传递实体类:java对象必须 序列化 。 实现序列化有2种方式: 1)bean对象实现Serializable接口 发送者和接收者bean对象都必须序列化 2)借助SerializationUtils工具类 <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.8</version> </dependency> 1 2 3 4 5 发送者:SerializationUtils.serialize() 接收者:SerializationUtils.deserialize() 缺点: 发送者和接收者的bean定义必须一模一样,包括bean路径 spring boot使用rabbitmq传递JSON对象 由于MQ直接传递JSON对象有弊端,所以建议使用JSON传递。 把对象使用ObjectMapper等JSON工具类把对象转换为JSON格式,然后发送。 @Autowired private ObjectMapper objectMapper; List<SystemConfiguration> configs = constructConfigs(protocolId); String msgJson

031. Kafka 入门及使用

两盒软妹~` 提交于 2020-08-10 18:17:08
1. 简介 Kafka 是 LinkedIn 使用 Scala 编写具有高水平扩展和高吞吐量的分布式消息系统。 Kafka 对消息保存时根据 Topic 进行归类,发送消息者称为 producer,消息接收者称为 consumer,此外 Kafka 集群有多个 Kafka 实例组成,每个实例(server)称为 broker。 无论是 Kafka 集群,还是 producer 和 consumer 都依赖于 zookeeper 来保证系统可用性,为集群保存一些 meta 信息。 2. 主流 MQ 对比 数据吞吐量:Kafka > RabbitMQ > ActiveMQ 数据准确性:RabbitMQ > ActiveMQ > Kafka ActiveMQ RabbitMQ Kafka 所属社区/公司 Apache Mozilla Public License Apache/LinkedIn 开发语言 Java Erlang Scala 支持的协议 OpenWire、STOMP、REST、XMPP、AMQP AMQP 仿 AMQP 事务 支持 不支持 0.11 开始支持 集群 支持(不擅长) 支持(不擅长) 支持 负载均衡 支持 支持 支持 动态扩容 不支持 不支持 支持(zk) 3. Kafka 主要特性 Kafka 是一个流处理平台,流平台需如下特性: 可发布和订阅流数据

RabbitMQ之认知

巧了我就是萌 提交于 2020-08-10 08:00:21
什么是MQ? 消息总线(Message Queue),是一种跨进程、异步的通信机制,用于上下游传递消息。 由消息系统来确保消息的可靠传递。 MQ是干什么用的? 应用解耦、异步、流量削锋、数据分发、错峰流控、日志收集等等... MQ衡量标准 服务性能、数据存储、集群架构 ActiveMQ ActiveMQ是apache出品,最流行的,能力强劲的开源消息总线,并且它一个完全支持JMS规范的消息中间件。其丰富的API、多种集群构建模式使得它成为业界老牌消息中间件,在中小型企业中应用广泛。 是其性能稍差,在面对高并发的情况下,会出现消息阻塞、堆积、延迟等问题。 默认采用了基于内存的kahaDB进行存储,如果需要保证消息的可靠性,也可以选择关系行数据库进行存储。 集群架构模式如下: Master-Slave模式:通过zookeeper对主从进行管理,正常情况下,从节点不会提供服务。当主节点出现问题后,zookeeper会高效的将主节点下掉,从节点来提供服务。 NetWork模式:两套主从Master-Slave节点。由网络联通,将其变为分布式的集群架构。 Kafka Kafka是LinkedIn开源的分布式发布-订阅消息系统,目前归属于Apache顶级项目。Kafka主要特点就是 基于Pull的模式来处理消息消费 , 追求高吞吐量 ,一开始的目的就是用于日志收集和传输。0.8版本开始支持复制