amqp

PHP amqp扩展安装

梦想与她 提交于 2020-03-15 10:21:46
1.安装 rabbitmq-c 下载地址:https://github.com/alanxz/rabbitmq-c > mkdir build > cd build > cmake -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DOPENSSL_LIBRARIES=/usr/local/opt/openssl/lib -DCMAKE_INSTALL_PREFIX=/usr/local .. > cmake --build . --target install 出现的问题: CMake Error at /usr/local/Cellar/cmake/3.11.2/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:137 (message): Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_INCLUDE_DIR) (Required 解决方案: brew install OpenSSL -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl

python中的pika模块

心不动则不痛 提交于 2020-03-11 10:59:02
工作中经常用到rabbitmq,而用的语言主要是python,所以也就经常会用到python中的pika模块,但是这个模块的使用,也给我带了很多问题,这里整理一下关于这个模块我在使用过程的改变历程已经中间碰到一些问题 的解决方法 刚开写代码的小菜鸟 在最开始使用这个rabbitmq的时候,因为本身业务需求,我的程序既需要从rabbitmq消费消息,也需要给rabbitmq发布消息,代码的逻辑图为如下: 下面是我的模拟代码: #! /usr/bin/env python3 # .-*- coding:utf-8 .-*- import pika import time import threading import os import json import datetime from multiprocessing import Process # rabbitmq 配置信息 MQ_CONFIG = { "host": "192.168.90.11", "port": 5672, "vhost": "/", "user": "guest", "passwd": "guest", "exchange": "ex_change", "serverid": "eslservice", "serverid2": "airservice" } class RabbitMQServer

消息中间件 二 之AMQP实战(下) RabbitMQ springboot实践

我的未来我决定 提交于 2020-03-10 23:15:29
实现内容 RabbitMQ + springboot 实现消息的发送和监听 springboot版本2.1.8 直接上代码 配置类 @Configuration public class RabbitConfig { // mq地址 @Bean(value = "connectionFactory") @Primary public ConnectionFactory connectionFactory( @Value("${spring.rabbitmq.host}") String host, @Value("${spring.rabbitmq.port}") int port, @Value("${spring.rabbitmq.username}") String username, @Value("${spring.rabbitmq.password}") String password, @Value("${spring.rabbitmq.virtual-host}") String virtualHost) { CachingConnectionFactory connectionFactory = new CachingConnectionFactory(); connectionFactory.setHost(host); connectionFactory

NOVA源码分析——NOVA中的RabbitMQ解析

瘦欲@ 提交于 2020-03-08 18:41:47
本篇文章是由本人阅读NOVA源码过程中的心得、 RabbitMQ 的官方文档以及网上的一些资料整理总结而成的,也为了方便以后对这部分内容的复习。 NOVA是OpenStack系统的核心模块,主要负责虚拟机实例的生命周期管理、网络管理(前几个版本)、存储卷管理(前几个版本)、用户管理以及其他相关云平台管理功能,在能力上类似于Amazon EC2和Rackspace Cloud Servers。 消息队列(Queue )与数据库(Database) 作为Nova总体架构中的两个重要组成部分,二者通过系统内消息传递和信息共享的方式实现任务之间、模块之间、接口之间的异步部署,在系统层面大大简化了复杂任务的调度流程与模式,是整个OpenStack Nova系统的核心功能模块。终端用户(DevOps、Developers和其他OpenStack组件)主要通过Nova API实现与OpenStack系统的互动,同时Nova守护进程之间通过消息队列和数据库来交换信息以执行API请求,完成终端用户的云服务请求。 Nova采用无共享、基于消息的灵活架构,意味着Nova的组件有多种安装方式,可以将每个Nova-Service模块单独安装在一台服务器上,同时也可以根据业务需求将多个模块组合安装在多台服务器上。 1. RabbitMQ OpenStack Nova系统目前主要采用 RabbitMQ

RabbitMQ入门及AMQP协议简介

大兔子大兔子 提交于 2020-03-08 09:40:46
RabbitMQ是一个消息代理:它接受和转发消息。你可以把它想象成一个邮局:当你把你想寄出的邮件放进一个邮箱里时,你可以确信邮件的收件人最终会收到邮件。在这个类比中,RabbitMQ是一个邮箱、一个邮局和一个邮递员。 RabbitMQ与邮局的主要区别在于,它不处理纸张,而是接受、存储和转发二进制的数据信息块。 RabbitMQ分为三大主体:生产者、消息队列、消费者。 请注意,生产者、消费者和代理不必驻留在同一主机上;事实上,在大多数应用程序中,它们不必驻留在同一主机上。应用程序也可以既是生产者又是消费者。 AMQP协议 Broker:接收和分发消息的应用,消息中间件的系统。 Virtual host:同一个RabbitMQ可以划分出多个虚拟主机,不同用户可以在不同的虚拟主机上创建自己的EXChange,queue。 Connection:publisher/consumer和broker之间的TCP连接,通过Socket进行获取inpustream和outputstream。连接断开操作只会在client端进行,broker不会断开连接。除非网络中断或者broker服务端故障。 Channel:信道,如果每一次访问RabbitMQ都建立一次连接,在消息量大的情况下建立TCP,Connection很消耗资源,而且效率很低。Channel是在Connection内部建立连接逻辑

RabbitTMQ实战 高效部署分布式消息队列笔记

戏子无情 提交于 2020-02-29 21:55:58
一、概念部分 1.各种常见MQ比较 ActiveMQ性能和稳定性较差 适用于中小型企业 kaffka不支持事务,对消息的重复、丢失、错误没有严格要求 性能最高 内存存储 RocketMQ java开发的,商业版支持分布式事务 RabbitMQ Erlang开发的,基于AMQP协议实现,稳定性可靠性很高,性能不错 RabbitMQ提供可靠性投递(confirm)、返回模式(return) 2.AMQP协议 1)AMQP(Advanced Message Queuing Protocal,高级消息队列协议) 2)Server:又称Broker,接受客户端的链接,实现AMQP实体服务 3)Channel:网络信道,几乎所有的操作都在Channel中进行,Channel是进行消息读写的通道。客户端可以建立多Channel,每个Channel代表一个会话任务。 用程序会和代理服务器之间创建一条TCP连接,即AMQP信道。信道是建立在真实TCP连接内的虚拟连接,每条信道会被指派一个唯一ID。建立和销毁TCP会话开销很大,信道方式不会给系统TCP栈造成额外负担。 4)Messaage:消息,由标签Properties和承载数据body组成。 5)Virtual host:虚拟主机,用于进行逻辑隔离,是最上层消息路由。 一个Virtual host里面可以有若干个Exchange和Queue

RabbitMQ 系列(一)AMQP协议

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-29 09:59:53
介绍 RabbitMQ 前,有必须先了解一下 AMQP 协议。 AMQP 协议是一个高级抽象层消息通信协议, RabbitMQ 是 AMQP 协议的实现。它主要包括以下组件: 1. Server(broker): 接受客户端连接,实现 AMQP 消息队列和路由功能的进程。 2. Virtual Host:其实是一个虚拟概念,类似于权限控制组,一个Virtual Host里面可以有若干个Exchange和Queue,但是权限控制的最小粒度是Virtual Host 3.Exchange:接受生产者发送的消息,并根据Binding规则将消息路由给服务器中的队列。ExchangeType决定了Exchange路由消息的行为,例如,在RabbitMQ中,ExchangeType有direct、Fanout和Topic三种,不同类型的Exchange路由的行为是不一样的。 4. Message Queue :消息队列,用于存储还未被消费者消费的消息。 5.Message: 由Header和Body组成,Header是由生产者添加的各种属性的集合,包括Message是否被持久化、由哪个Message Queue接受、优先级是多少等。而Body是真正需要传输的APP数据。 6. Binding:Binding 联系了 Exchange 与 Message Queue 。 Exchange

AMQP.0-10中文版——概述

我怕爱的太早我们不能终老 提交于 2020-02-29 09:54:21
AMQP.0-10中文版——概述 第1章 概述 1.1. 本文档的目标 这份文档定义了高级消息队列协议,这个协议使得遵从该协议的客户端应用和消息中间件服务器之间能够互相通信。为了完全实现互操作性,我们还定义了消息中间件服务的标准行为。 我们面对这个领域有经验的技术读者,同时还提供了足够的规范和指南,一个合适的技术工程师可以根据这些文档在任何硬件平台上用各种编程语言来构建遵从该协议的解决方案。 1.2. 专利 AMQP的设计目标之一是它的概念都来自于现有的、无产权阻碍的、广泛推行的标准——比如由互联网工程任务组和万维网颁布的标准。 因此,我们相信仅用众所周知的一些技术就能够实现AMQP服务,比如现有的开源网络程序和电子邮件路由软件或者那些技术专家们所熟悉的技术。 1.3. 摘要 1.3.1. 什么是AMQP 高级消息队列协议使得遵从该规范的客户端应用和消息中间件服务器的全功能互操作成为可能。 1.3.2. 为什么要用AMQP 我们的目标是实现一种在全行业广泛使用的标准消息中间件技术,以便降低企业和系统集成的开销,并且向大众提供工业级的集成服务。 我们的宗旨是通过AMQP,让消息中间件的能力最终被网络本身所具有,并且通过消息中间件的广泛使用发展出一系列有用的应用程序。 1.3.3. AMQP的范围 为了完全实现消息中间件的互操作性,需要充分定义网络协议和消息代理服务的功能语义。 因此,

RabbitMQ入门

你。 提交于 2020-02-28 18:47:58
文章目录 一、rabbitMQ简介 各大主流中间件对比: 初识RabbitMQ RabbitMQ高性能的原因? 什么是AMQP高级消息队列协议? AMQP核心概念(重点) 二、rabbitMQ安装及使用(两种) Centos安装方式 Docker安装方式 常用操作命令 三、rabbitMQ快速入门 四、交换机 直流交换机 主题交换机 输出交换机 一、rabbitMQ简介 各大主流中间件对比: ActiveMQ ActiveMQ 是 Apache 出品,最流行的,能力强劲的开源消息总线,并且它一个完全支持 J M S 规范的消息中间件。 其丰富的 API 、多种集群构建模式使得他成为业界老牌消息中间件,在中小型企业中应用广泛! MQ 衡量指标:服务性能、数据存储、集群架构 Kafka 用来做日志分析的 RocketMQ RocketMQ是阿里开源的消息中间件,目前也已经孵化为Apache顶级项目,它是纯java开发,具有高吞吐量、高可用性、适合大规模分布式系统 应用的特点。 RocketMQ思路起源于Kafka,它对消息的可靠传输及事务 性做了优化,目前在阿里集团被广泛应用于交易、充值、流计算、消息推 送、日志流式处理、binglog分发等场景 RabbitMQ RabbitMQ是使用Erlang语言开发的开源消息队列系统,基于AMQP协议 来实现。 AMQP的主要特征是面向消息

rabbitmq系列(一)初识rabbitmq

家住魔仙堡 提交于 2020-02-27 08:31:47
为什么要使用消息中间件 案例:假如我们开发了一个商品抢购网站。这个网站的目的就是在某一时间点进行抢购商品,同时要求用户注册,在注册的时候会同时给用户电话和邮箱中发送验证码,以便完成信息注册。传统做法应该是这样的。两种方式,并行即启用两个线程,当用户提交信息后,分别去发送邮件和发送短信。这种方式很明显比串行的方式更快。当我们加入消息队列后,处理方式如下图: 加入消息中间件后,我们只需要注册信息存库后,给消息队列中添加一条消息就完事了。然后邮件服务和短信服务分别去消费消息即可。 当用户注册完成后,到了抢购商品的时间,大家都去抢购某个商品的时候这个量很大。消息队列可以设置队列长度来保证系统的稳定性。当队列满了的时候,则不再处理这些用户请求。 因此我们可以总结一下消息队列的特点: 异步处理 -- 用户注册信息提交后,直接返回响应。然后邮件服务和短信服务监听到队列有消息后去主动处理 应用解耦 -- 用户注册流程分成了三个服务,注册服务、邮件服务、短信服务互不干扰。 流量削峰 -- 控制用户请求,以防系统奔溃。 常见消息中间件介绍 ActiveMQ :apache出品,能力强劲的开源消息总线,完全支持jms规范的消息中间件。api丰富,在传统行业的中小型企业中应用广泛。缺点:服务性能和数据存储性能不好。 Kafka :apache顶级项目,追求高吞吐量。一开始的目的是用于日志收集和传输