本章概要

  • AMQP
  • 安装 RabbitMQ

12.2.1 AMQP 简介

AMQP (Advanced Message Queuing Protocol,高级消息队列协议),是一个线路层的协议规范,而不是 API 规范(例如 JMS)。由于 AMQP 是一个线路层协议规范,因此它天然就是跨平台的,就像 SMTP、HTTP 等协议一样,只要开发者按照规范的格式发送数据,任何平台都可以通过 AMQP 进行消息交互。像目前流行的 StormMQ 、RabbitMQ 等都实现了 AMQP 。

12.2.2 Spring Boot 整合 AMQP

和 JMS 一样,使用 AMQP 也是使用 AMQP 的某个实现,此处以 RabbitMQ 为例介绍 AMQP 的使用。

1. RabbitMQ 简介

RabbitMQ 是一个实现了 AMQP 的开源消息中间件,使用高性能的 Erlang 编写。RabbitMQ 具有可靠性、支持多协议、高可用、支持消息集群以及多语言客户端等特点,在分布式系统中存储转发消息,具有不错的性能表现。

2. RabbitMQ 安装

由于 RabbitMQ 使用 Erlang 编写,因此需要先安装 Erlang 环境,在 CentOS 7 中安装 Erlang 21.0 的步骤如下(其它下载地址:otp_src_21.0.tar.gz):
(1)下载解压安装包

wget http://erlang.org/download/otp_src_21.0.tar.gz
tar -zxvf /opt/package/otp_src_21.0.tar.gz -C /opt/soft/

(2)编译

./otp_build autoconf
./configure

报错了以下错误

configure: error: No curses library functions found
configure: error: /opt/soft/otp_src_21.0/erts/configure failed for erts

解决方案(没报错不需要)

yum -y install ncurses-devel
./otp_build autoconf
./configure

(3)安装校验

make install
erl

看到以下内容表示 Erlang 安装成功

[root@VM-12-5-centos otp_src_21.0]# erl
Erlang/OTP 21 [erts-10.0] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1] [hipe]Eshell V10.0  (abort with ^G)
1>

Erlang 安装成功后,然后开始安装 RabbitMQ
(1)下载安装文件

wget https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.7/rabbitmq-server-3.7.7.el7.noarch.rpm

如果提示502,在此下载:erlang-21.0.9-1.el7,rabbitmq-server-3.7.7-1.el7,还是502,直接离线安装吧:rabbitmq-server-generic-unix-3.7.7.tar

(2)解压

tar -xvf /opt/package/rabbitmq-server-generic-unix-3.7.7.tar -C /opt/soft/

修改主机名:vim /etc/hosts,追加一行 127.0.0.1 VM-12-5-centos(VM-12-5-centos改为自己的主机名),因为RabbitMQ在启动的时候会ping自己的主机名,所以这里要进行映射,然后重启网络:service network restart

(3)启动

注意:启动的时候注意查看日志(tail -f /opt/soft/rabbitmq_server-3.7.7/var/log/rabbitmq/log/crash.log)
我这报错了,原因是端口被占用

查看端口占用信息:**lsof -i:5672,然后 kill 掉,kill -9 3918

/opt/soft/rabbitmq_server-3.7.7/sbin/rabbitmq-server start

(3)查看状态

/opt/soft/rabbitmq_server-3.7.7/sbin/rabbitmqctl status
Status of node rabbit@VM-12-5-centos ...
[{pid,17978},{running_applications,[{rabbitmq_management,"RabbitMQ Management Console","3.7.7"},{rabbitmq_management_agent,"RabbitMQ Management Agent","3.7.7"},{rabbitmq_web_dispatch,"RabbitMQ Web Dispatcher","3.7.7"},{rabbit,"RabbitMQ","3.7.7"},{amqp_client,"RabbitMQ AMQP Client","3.7.7"},{rabbit_common,"Modules shared by rabbitmq-server and rabbitmq-erlang-client","3.7.7"},{recon,"Diagnostic tools for production use","2.3.2"},{cowboy,"Small, fast, modern HTTP server.","2.2.2"},{ranch_proxy_protocol,"Ranch Proxy Protocol Transport","1.5.0"},{ranch,"Socket acceptor pool for TCP protocols.","1.5.0"},{ssl,"Erlang/OTP SSL application","9.0"},{public_key,"Public key infrastructure","1.6"},{asn1,"The Erlang ASN1 compiler version 5.0.6","5.0.6"},{os_mon,"CPO  CXC 138 46","2.4.5"},{jsx,"a streaming, evented json parsing toolkit","2.8.2"},{mnesia,"MNESIA  CXC 138 12","4.15.4"},{xmerl,"XML parser","1.3.17"},{cowlib,"Support library for manipulating Web protocols.","2.1.0"},{crypto,"CRYPTO","4.3"},{inets,"INETS  CXC 138 49","7.0"},{lager,"Erlang logging framework","3.6.3"},{goldrush,"Erlang event stream processor","0.1.9"},{compiler,"ERTS  CXC 138 10","7.2"},{syntax_tools,"Syntax tools","2.1.5"},{syslog,"An RFC 3164 and RFC 5424 compliant logging framework.","3.4.2"},{sasl,"SASL  CXC 138 11","3.2"},{stdlib,"ERTS  CXC 138 10","3.5"},{kernel,"ERTS  CXC 138 10","6.0"}]},{os,{unix,linux}},{erlang_version,"Erlang/OTP 21 [erts-10.0] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:64] [hipe]\n"},{memory,[{connection_readers,0},{connection_writers,0},{connection_channels,0},{connection_other,2820},{queue_procs,0},{queue_slave_procs,0},{plugins,799300},{other_proc,29727876},{metrics,195020},{mgmt_db,153256},{mnesia,73104},{other_ets,2823312},{binary,88784},{msg_index,31152},{code,23237767},{atom,1131721},{other_system,10672784},{allocated_unused,8706880},{reserved_unallocated,0},{strategy,rss},{total,[{erlang,68936896},{rss,73388032},{allocated,77643776}]}]},{alarms,[]},{listeners,[{clustering,25672,"::"},{amqp,5672,"::"},{http,15672,"::"}]},{vm_memory_calculation_strategy,rss},{vm_memory_high_watermark,0.4},{vm_memory_limit,770865561},{disk_free_limit,50000000},{disk_free,38876147712},{file_descriptors,[{total_limit,99901},{total_used,2},{sockets_limit,89908},{sockets_used,0}]},{processes,[{limit,1048576},{used,376}]},{run_queue,1},{uptime,118},{kernel,{net_ticktime,60}}]

(4)开启web插件

/opt/soft/rabbitmq_server-3.7.7/sbin/rabbitmq-plugins enable rabbitmq_management

(5)重启

/opt/soft/rabbitmq_server-3.7.7/sbin/rabbitmq-server restart

(6)添加一个用户名为 long,密码为 123 的用户

/opt/soft/rabbitmq_server-3.7.7/sbin/rabbitmqctl add_user long 123

(7)设置 long 用户的角色为管理员

/opt/soft/rabbitmq_server-3.7.7/sbin/rabbitmqctl set_user_tags long administrator

(8)配置 long 的权限

/opt/soft/rabbitmq_server-3.7.7/sbin/rabbitmqctl  set_permissions -p / long '.*' '.*' '.*'

(9)登录
浏览器访问:http://ip:15672

登录 long 用户

十二、消息服务(2)相关推荐

  1. 《深入理解 Spring Cloud 与微服务构建》第十二章 服务注册和发现 Consul

    <深入理解 Spring Cloud 与微服务构建>第十二章 服务注册和发现 Consul 文章目录 <深入理解 Spring Cloud 与微服务构建>第十二章 服务注册和发 ...

  2. Dapr + .NET 实战(十二)服务调用之GRPC

    欢迎大家参加4小时Dapr+.NET 5的实战课程 课程链接     https://ke.qq.com/course/4000292?tuin=1271860f 什么是GRPC gRPC 是一种与语 ...

  3. 谷粒商城二十二订单服务支付宝支付

    我们支付暂时只开发支付宝,官方文档在蚂蚁金服开放平台-电脑网站支付. 按照正规的流程,我们的系统要接入支付宝,肯定是需要大量的审核过程,而且需要我们的项目上线. 那现在我们就想测试该怎么办?支付宝为我 ...

  4. 戏说领域驱动设计(十二)——服务

    Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...

  5. Flask(十二)——消息闪现

    一个基于GUI好的应用程序需要向用户提供交互的反馈信息. 例如,桌面应用程序使用对话框或消息框,JavaScript使用 alert() 函数用于类似的目的. 在Flask Web应用程序中生成这样的 ...

  6. PostgreSQL学习第十二篇 服务的启停和创建

    启动一个数据库实例有两种方法:1. 直接运行postgres进程启动 postgres -D /home/xxxxx &2. 使用pg_ctl命令启动 pg_ctl -D /xxx start ...

  7. Netty实战 IM即时通讯系统(十二)构建客户端与服务端pipeline

    Netty实战 IM即时通讯系统(十二)构建客户端与服务端pipeline 零. 目录 IM系统简介 Netty 简介 Netty 环境配置 服务端启动流程 客户端启动流程 实战: 客户端和服务端双向 ...

  8. RocketMQ(十二)消息堆积与消费延迟

    RocketMQ(十二)消息堆积与消费延迟 产生背景 消息处理流程中,如果Consumer的消费速度跟不上Producer的发送速度,MQ中未处理的消息会越来越多,这部分消息就被称为 堆积消息.消息出 ...

  9. 谷粒商城--秒杀服务--高级篇笔记十二

    谷粒商城–秒杀服务–高级篇笔记十二 1.后台添加秒杀商品 未配置秒杀服务相关网关 1.1 配置网关 - id: coupon_routeuri: lb://gulimall-couponpredica ...

  10. RHEL4- WEB服务(十二)用户访问apache服务器认证

    RHEL4- WEB服务(十二)用户访问apache服务器认证   有些时候网站上的内容不是希望所有的用户都可以访问,由于网页内容性质的不同,会对来访的用户有所分类,网站的提供方希望部分网页内容只提供 ...

最新文章

  1. LNMP网站并发计算
  2. requests模拟登陆 验证码
  3. TCP 拥塞窗口原理
  4. 如何解决某个端口被谁占用?
  5. java实现mysql的主从切换(第二部分)
  6. mysql 终端操作
  7. 交换机工作原理及实验浅析
  8. Angular rxjs Subject笔记
  9. 记腾讯互娱网站布局(1)
  10. 20180802总结
  11. php自动打印小票_服装店专用小票机自带进销存
  12. 【caffe-windows】 caffe-master 之Matlab中model的分类应用
  13. stm32新建工程(详细)
  14. No pubspec.yaml file found. This command should be run from the root of your Flutter project. Do not
  15. 一周试用yii开发一个带各种该有功能的web程序(三)
  16. 软件推荐:论文翻译阅读 + 文献管理 + markdown笔记 + 多设备同步 + 一键导出bib参考文献
  17. 博弈 - SG函数和SG定理
  18. Excel单元格内换行(包括空行)for Mac
  19. 【数据分析案例】使用机器学习做游戏留存数据挖掘的一种尝试
  20. 封装前端UI组件库--button

热门文章

  1. R语言对多个数据框的相同列进行操作
  2. 信号发生器低占空比调节
  3. 小刀学习flink 之入门 hello word
  4. QYT-X1S在高速公路可视化的网络解决方案
  5. 论文写作——can‘t, cannot 还是 can not?
  6. 第九章 Maximum Variance Unfolding (MVU)
  7. 同轴高清技术---AHD/HD-CVI/HD-SDI/HD-TVI
  8. Spring JTA多数据源事务管理详细教程
  9. apache benchmark(ab) 进行压测
  10. c语言编写简易打飞机游戏