RabbitMQ

Linux环境下安装RabbitMQ

落爺英雄遲暮 提交于 2020-03-12 03:15:59
首先RabbitMQ是使用erLang编写的开源消息中间件.所以需要先安装erlang环境. 我使用的是CentOS的系统安装erlang21.0的步骤如下: #下载安装包 (下面是我用的比较匹配的版本,可以直接使用,防止出现RabbitMQ嫌弃ErLang版本太低的问题,互相不兼容的问题,喜欢的请留个赞,谢谢!) 方法一: 链接: https://pan.baidu.com/s/1pQiMMF3K1sekoPKRN_S1xw 提取码: 749j 安装方法直接解压:rpm -ivh ....XXXX.rpm.gz 如果不喜欢可以使用以下方法直接去官网下载.如果遇到不匹配的情况,可以下载多个版本试验一下 方法二: wget http://erlang.org/download/otp_src_21.0.tar.gz # 解压文件 tar -zxvf otp_src_21.0.tar.gz cd otp_src_21.0 #编译 ./otp_build autoconf ./configure make (如果执行到此报错,请往下看,解决方案) #安装 make install ***如果在make的时候报错**** Makefile:248: /usr/local/otp_src_18.1/make/x86_64-unknown-linux-gnu/otp_ded.mk: No

centos7安装rabbitmq

不羁岁月 提交于 2020-03-12 03:12:12
在当前目录(/root) wget http://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el7.centos.x86_64.rpm wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm 安装erlang: rpm -ivh erlang-19.0.4-1.el7.centos.x86_64.rpm 测试是否安装成功: erl 安装rabbitmq: rpm -ivh rabbitmq-server-3.6.6-1.el7.noarch.rpm 在安装rabbitmq时提示依赖socat      yum install socat 然后再次安装rabbitmq 查看状态 systemctl status rabbitmq-server.service (其中可看到Logs日志文件所在目录,查看对应日志可查看配置文件目录) 启动 systemctl start rabbitmq-server.service 查看RabbitMQ中用户命令 rabbitmqctl list_users 创建用户命令 rabbitmqctl add_user cjh cjh (用户名与密码)

centos7安装rabbitmq

僤鯓⒐⒋嵵緔 提交于 2020-03-12 03:11:33
第一、下载erlang和rabbitmq-server的rpm: http://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el7.centos.x86_64.rpm http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm 然后,把下载的rpm文件都放到一个文件夹中,方便安装 第二、安装erlang:   rpm -ivh erlang-19.0.4-1.el7.centos.x86_64.rpm   测试是否安装成功:   erl   ctrl + z 退出 第三、安装rabbitmq:     rpm -ivh rabbitmq-server-3.6.6-1.el7.noarch.rpm   在安装rabbitmq时提示依赖socat      yum install socat   然后再次安装rabbitmq 执行: systemctl stoprabbitmq-server.service #关闭 systemctl start rabbitmq-server.service #启动 systemctl status rabbitmq-server.service #状态 1. 用户管理

spring boot集成RabbitMQ

核能气质少年 提交于 2020-03-11 19:40:45
原文:https://www.jianshu.com/p/e1258c004314 RabbitMQ作为AMQP的代表性产品,在项目中大量使用。结合现在主流的spring boot,极大简化了开发过程中所涉及到的消息通信问题。 首先正确的安装RabbitMQ及运行正常。 RabbitMQ需啊erlang环境,所以首先安装对应版本的erlang,可在RabbitMQ官网下载 # rpm -ivh erlang-19.0.4-1.el7.centos.x86_64.rpm 使用yum安装RabbitMQ,避免缺少依赖包引起的安装失败 # yum install rabbitmq-server-3.6.6-1.el7.noarch.rpm 启动RabbitMQ # /sbin/service rabbitmq-server start 由于RabbitMQ默认提供的guest用户只能本地访问,所以额外创建用户用于测试 # /sbin/rabbitmqctl add_user test test123 用户名:test,密码:test123 开启web管理插件 # rabbitmq-plugins enable rabbitmq_management 并使用之前创建的用户登录,并设置该用户为administrator,虚拟主机地址为/ spring boot 引入相关依赖

5 分钟搭建 Node.js 微服务原型

99封情书 提交于 2020-03-11 16:41:37
微服务已成为在 Node.js 中构建可扩展且强大的云应用的主流方法。同时也存在一些门槛,其中一些难点需要你在以下方面做出决策: 组织项目结构。 将自定义服务连接到第三方服务(数据库,消息代理等) 处理微服务之间共享的代码。 将项目容器化。 在本地运行和调试,然后将其部署到云中。 SMF 框架是开箱即用的解决方案: https://github.com/krawa76/smf 让我们看看它如何帮你创建和部署微服务原型而 无需编写任何代码。 创建项目 安装框架,创建一个新项目并 cd 到项目目录: 1$ npm install -g sokyra-microservice-factory 2$ smf new test-stack 3$ cd test-stack 带有演示服务的样板代码已生成,我们可以轻松地运行该项目: 1$ smf up 这将生成 Docker工件(docker-compose 和环境变量文件),构建映像并在本地运行容器: docker-compose 日志 如果在编辑器中打开项目,则会看到带有 main.ts 模块的自动生成的 demo 服务,该服务在上面的日志中生成了记录。其他的重要文件是 smf-stack.json (项目配置), smf-env.json (容器 env 变量),通用的 Dockerfile 和 smf-docker.yml

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

[RabbitMQ]基础概念——信道channel

折月煮酒 提交于 2020-03-10 20:41:32
目录 前言: 1.channel信道 1.1 为什么RabbitMQ 需要信道,如果直接进行TCP通信呢? 1.2 连接到RabbitMQ的示意图 前言: 最近跟着公司一起做项目重构,也有项目用到了MQ。其中用到了死信队列和延迟队列。 先整理一下路由的基础知识,不能只跟着实战,堆代码。 1.channel信道 信道是生产消费者与rabbit通信的渠道,生产者publish或者消费者消费一个队列都是需要通过信道来通信的。 信道是建立在TCP上面的虚拟链接,也就是rabbitMQ在一个TCP上面建立成百上千的信道来达到多个线程处理。 注意是一个TCP 被多个线程共享,每个线程对应一个信道,信道在rabbit都有唯一的ID,保证了信道的私有性,对应上唯一的线程使用。 1.1 为什么RabbitMQ 需要信道,如果直接进行TCP通信呢? 上述的描述其实已经很明显了,因为TCP可以被多个线程共享,显然线程比TCP要省事的多。 TCP的创建开销很大,创建需要三次握手,销毁需要四次握手。 如果不使用信道,那么引用程序就会使用TCP方式进行连接到RabbitMQ,因为MQ可能每秒会进行成千上万的链接, 总之就是TCP消耗资源 TCP链接可以容纳无限的信道,不会有并发上面的性能瓶颈。 在代码中并不会有直观的能看到信道这个概念。 因为代码中都是用自动配置。 @Autowired

RabbitMQ的工作模式之一简单(Simple)模式

天大地大妈咪最大 提交于 2020-03-10 10:36:44
RabbitMQ的工作模式之一简单(Simple)模式 由一个生产者,一个消费者组成,消息通过FIFO模式排队。 导入依赖 <!--RabbitMQ的依赖--> <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.7.3</version> </dependency> 首先创建工具类,用以生成连接,避免重复书写此段代码 public class RabbitMQUtil { private static ConnectionFactory factory = new ConnectionFactory(); static{ //用户名 factory.setUsername("hello"); //密码 factory.setPassword("123456"); //虚拟机 factory.setVirtualHost("/myhost"); //IP地址,运行rabbitmq组件的主机ip地址 factory.setHost("192.168.31.14"); //端口 factory.setPort(5672); } public static Connection getConnection(){ Connection connection

面试问题汇总

廉价感情. 提交于 2020-03-10 10:22:38
本文整理了一些面试时面试官必问的知识点,其中包括了有基础知识、Java集合、JVM、多线程并发、spring原理、微服务、Netty 与RPC 、Kafka、日记、设计模式、Java算法、数据库、Zookeeper、分布式缓存、数据结构等等。 以下是文档涉及的主要内容: JVM 线程 JVM内存区域 JVM运行时内存 垃圾回收与算法 JAVA 四种引用类型 GC分代收集算法 VS 分区收集算法 GC垃圾收集器 JAVA IO/NIO JVM 类加载机制 JAVA集合 接口继承关系和实现 List ArrayList(数组) Vector(数组实现、线程同步) LinkList(链表) Set HashSet(Hash表) TreeSet(二叉树) JAVA多线程并发 JAVA并发知识库 JAVA线程实现/创建方式 4种线程池 线程生命周期(状态) 终止线程4种方式 sleep与wait 区别 start与run区别 JAVA后台线程 JAVA锁 线程基本方法4.1.11. 线程上下文切换 同步锁与死锁 线程池原理 JAVA阻塞队列原理 CyclicBarrier、CountDownLatch、Semaphore的用法 volatile关键字的作用(变量可见性、禁止重排序) 如何在两个线程之间共享数据 JAVA基础 JAVA异常分类及处理 JAVA反射 JAVA注解 JAVA内部类

RabbitMQ学习笔记

筅森魡賤 提交于 2020-03-09 18:44:30
1. 消息中间件的核心设计思想 : 采用 异步 通讯、自动 补偿与重试 、 分布式事务 、解决 流量削峰 问题、系统的 解耦 2. 消息中间件常用名词 : Broker 消息转发端,消息中间件Server端; Message 发送的消息内容 roducer 生产者,向Server端投递消息; Consumer 消费者,向Server端获取消息 MessageId 消息全局id 解决消息幂等性问题 3. 主流的MQ对比分析 ActiveMQ: 基本淘汰(老项目使用) 够轻巧(源代码比RocketMQ多),支持持久化到数据库, 对队列数较多的情况支持不好。 RabbitMQ: 结合erlang语言本身的并发优势,支持很多的协议:AMQP,XMPP, SMTP, STOMP, 也正是如此,使的它变的非常重量级,更适合于企业级的开发。 RocketMQ: 阿里系下开源的一款分布式、队列模型的消息中间件,原名Metaq,3.0版本名称改为RocketMQ, 是阿里参照kafka设计思想使用java实现的一套mq,同时将阿里系内部多款mq产品 (Notify、metaq)进行整合,只维护核心功能,去除了所有其他运行时依赖, 保证核心功能最简化,在此基础上配合阿里上述其他开源产品实现不同场景下mq的架构, 目前主要多用于订单交易系统。 Kafka: Apache下的一个子项目