首页 > 其他分享 >rabbitmq

rabbitmq

时间:2023-02-20 11:45:22浏览次数:20  
标签:服务 队列 rabbitmq RabbitMQ devel 消息

RabbitMQ简介
以熟悉的电商场景为例,如果商品服务和订单服务是两个不同的微服务,在下单的过程中订单服务需要调用商品服务进行扣库存操作。按照传统的方式,下单过程要等到调用完毕之后才能返回下单成功,如果网络产生波动等原因使得商品服务扣库存延迟或者失败,会带来较差的用户体验,如果在高并发的场景下,这样的处理显然是不合适的,那怎么进行优化呢?这就需要消息队列登场了。

消息队列提供一个异步通信机制,消息的发送者不必一直等待到消息被成功处理才返回,而是立即返回。消息中间件负责处理网络通信,如果网络连接不可用,消息被暂存于队列当中,当网络畅通的时候在将消息转发给相应的应用程序或者服务,当然前提是这些服务订阅了该队列。如果在商品服务和订单服务之间使用消息中间件,既可以提高并发量,又降低服务之间的耦合度。

image

RabbitMQ就是这样一款我们苦苦追寻的消息队列。RabbitMQ是一个开源的消息代理的队列服务器,用来通过普通协议在完全不同的应用之间共享数据。

RabbitMQ是使用Erlang语言来编写的,并且RabbitMQ是基于AMQP协议的。Erlang语言在数据交互方面性能优秀,有着和原生Socket一样的延迟,这也是RabbitMQ高性能的原因所在。可谓“人如其名”,RabbitMQ像兔子一样迅速。



RabbitMQ除了像兔子一样跑的很快以外,还有这些特点:

开源、性能优秀,稳定性保障
提供可靠性消息投递模式、返回模式
与Spring AMQP完美整合,API丰富
集群模式丰富,表达式配置,HA模式,镜像队列模型
保证数据不丢失的前提做到高可靠性、可用性
MQ典型应用场景:

异步处理。把消息放入消息中间件中,等到需要的时候再去处理。
流量削峰。例如秒杀活动,在短时间内访问量急剧增加,使用消息队列,当消息队列满了就拒绝响应,跳转到错误页面,这样就可以使得系统不会因为超负载而崩溃。
日志处理
应用解耦。假设某个服务A需要给许多个服务(B、C、D)发送消息,当某个服务(例如B)不需要发送消息了,服务A需要改代码再次部署;当新加入一个服务(服务E)需要服务A的消息的时候,也需要改代码重新部署;另外服务A也要考虑其他服务挂掉,没有收到消息怎么办?要不要重新发送呢?是不是很麻烦,使用MQ发布订阅模式,服务A只生产消息发送到MQ,B、C、D从MQ中读取消息,需要A的消息就订阅,不需要了就取消订阅,服务A不再操心其他的事情,使用这种方式可以降低服务或者系统之间的耦合。
yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget gtk2-devel binutils-devel java-devel unixODBC-devel *glu.h  mesa-lib GLU-devel wxWidgets-devel wxBas

wget -c http://erlang.org/download/otp_src_23.2.tar.gz

tar -xf wxWidgets-3.1.7.tar.bz2 
cd /usr/bin
ln -s wx-config-3.0 wx-config


tar -xf otp_src_23.2.tar.gz 
cd otp_src_23.2
./configure --prefix=/usr/local/erlang
make && make install

tar -xf rabbitmq-server-generic-unix-3.8.34.tar.xz 
mv rabbitmq_server-3.8.34/ /usr/local/rabbitmq
vim /etc/profile
 添加
 	export 	PATH=$PATH:/usr/local/rabbitmq/bin
rabbitmq-server start
rabbitmqctl add_user admin admin
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
rabbitmq-plugins enable rabbitmq_management
rabbitmqctl status
rabbitmq-server stop
rabbitmqctl status
ps -ef|grep rabbit
rabbitmq-server -detached

rabbitmqctl list_users
rabbitmqctl set_user_tags admin administrator
rabbitmqctl list_users



rabbitmq地址
172.20.64.193:25672
172.20.64.193:15672 (web)

用户:admin
密码:admin


主要端口说明
    5672 --client端通信口
 
    15672 -- 管理界面ui端口
    
    25672 -- server间内部通信口

访问RabbitMQ管理界面可以访问如下:

    http://IP:15672/

连接RabbitMQ的话就要用client端通信口:

    server: amqp://guest:guest@localhost:5672/

标签:服务,队列,rabbitmq,RabbitMQ,devel,消息
From: https://www.cnblogs.com/sddll/p/17136768.html

相关文章

  • RabbitMQ面试题
    RabbitMQ面试题1、什么是rabbitmq采用AMQP高级消息队列协议的一种消息队列技术,最大的特点就是消费并不需要确保提供方存在,实现了服务之间的高度解耦2、为什么要......
  • RabbitMq 在centos中开机自启动
    转自:https://www.cnblogs.com/chenyishi/p/13914166.html RabbitMq在centos中开机自启动 1.在/etc/init.d目录下新建一个rabbitmq[[email protected]]#v......
  • 97、商城业务---消息队列---RabbitMQ安装
    dockerrun-d--namerabbitmq-p5671:5671-p5672:5672-p4369:4369-p25672:25672-p15671:15671-p15672:15672rabbitmq:managementdockerupdaterabbitmq--......
  • RabbitMQ初探
    RabbitMQ初探结合SpringAMQP,讨论RabbitMQ的几种消息模型RabbitMQTutorials工程结构├─consumer└─publisher父工程pom.xml<parent><groupId>org.springf......
  • 96、商城业务---消息队列---RabbitMQ工作流程&概念
    流程如下:生产者先跟消息代理建立一条长连接,在长连接里开辟很多通道(channel),然后通过通道发送消息Message,其中消息必须指定路由键route-key。消息代理里面有很多交换......
  • 95、商城业务---消息队列---RabbitMQ简介
    其中点对点式指只能有一个发送者,但是可有有多个接收者并且只能由一个接收者可以获得消息JMS和AMQP是两大规范......
  • rabbitMq客户端连接超时
    rabbitMq客户端连接超时rabbitmq有两个端口号:15672,用户web页面的http连接;5672用户客户端的tcp长连接。用腾讯云搭建时:需要在防火墙策略处将两个端口都打开。......
  • 安装rabbitmq
    1、创建文件夹mkdirrabbitmqcdrabburmq2、安装Erlanga、在安装RabbitMQ之前,必须安装受支持的Erlang/OTP 版本。在基于RPM的发行版中,Erlang软件包有三种常......
  • RabbitMQ工作原理及应用
    工作模式https://www.rabbitmq.com/getstarted.html上图,列出了RabbitMQ的使用模式,学习上面的模式,对理解所有消息队列都很重要。名词解释名词说明server服务......
  • RabbitMQ的基础安装与使用
    安装主机部署http://www.rabbitmq.com/install-rpm.html选择RPM包下载,选择对应平台,本次安装在CentOS7,其它平台类似。由于使用了erlang语言开发,所以需要erlang的包。er......