RabbitMQ学习01

这篇具有很好参考价值的文章主要介绍了RabbitMQ学习01。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

四大核心概念

生产者

产生数据发送消息的程序是生产者

交换机

交换机是 RabbitMQ 非常重要的一个部件,一方面它接收来自生产者的消息,另一方面它将消息推送到队列中。交换机必须确切知道如何处理它接收到的消息,是将这些消息推送到特定队列还是推送到多个队列,亦或者是把消息丢弃,这个得有交换机类型决定

队列

队列是 RabbitMQ 内部使用的一种数据结构,尽管消息流经 RabbitMQ 和应用程序,但它们只能存储在队列中。队列仅受主机的内存和磁盘限制的约束,本质上是一个大的消息缓冲区。许多生产者可以将消息发送到一个队列,许多消费者可以尝试从一个队列接收数据。这就是我们使用队列的方式

消费者

消费与接收具有相似的含义。消费者大多时候是一个等待接收消息的程序。请注意生产者,消费者和消息中间件很多时候并不在同一机器上。同一个应用程序既可以是生产者又是可以是消费者。

各个名词的介绍

RabbitMQ学习01,RabbitMQ,rabbitmq,学习
Broker
接收和分发消息的应用,RabbitMQ Server 就是 Message Broker
Virtual host
出于多租户和安全因素设计的,把 AMQP 的基本组件划分到一个虚拟的分组中,类似于网络中的 namespace 概念。当多个不同的用户使用同一个 RabbitMQ server 提供的服务时,可以划分出多个 vhost,每个用户在自己的 vhost 创建 exchange/queue 等
Connection
publisher/consumer 和 broker 之间的 TCP 连接
Channel
如果每一次访问 RabbitMQ 都建立一个 Connection,在消息量大的时候建立 TCP
Connection 的开销将是巨大的,效率也较低。Channel 是在 connection 内部建立的逻辑连接,如果应用程序支持多线程,通常每个 thread 创建单独的 channel 进行通讯,AMQP method 包含了 channel id 帮助客户端和 message broker 识别 channel,所以 channel 之间是完全隔离的。Channel 作为轻量级的Connection 极大减少了操作系统建立 TCP connection的开销
Exchange
message 到达 broker 的第一站,根据分发规则,匹配查询表中的 routing key,分发消息到 queue 中去。常用的类型有:direct (point-to-point), topic (publish-subscribe) and fanout (multicast)
Queue
消息最终被送到这里等待 consumer 取走
Binding
exchange 和 queue 之间的虚拟连接,binding 中可以包含 routing key,Binding 信息被保存到 exchange 中的查询表中,用于 message 的分发依据。

安装

  1. 官网地址
    https://www.rabbitmq.com/download.html
  2. 文件上传
    上传到/usr/local/software 目录下(如果没有 software 需要自己创建)
    需要上传erlang的rpm安装包,rabbitmq的rpm安装包
  3. 安装文件(分别按照以下顺序安装)
rpm -ivh erlang-21.3-1.el7.x86_64.rpm
yum install socat -y
rpm -ivh rabbitmq-server-3.8.8-1.el7.noarch.rpm
  1. 常用命令

添加开机启动 RabbitMQ 服务:

chkconfig rabbitmq-server on

启动服务

/sbin/service rabbitmq-server start

查看服务状态

/sbin/service rabbitmq-server status

停止服务(选择执行)

/sbin/service rabbitmq-server stop

开启 web 管理插件(通过15672端口访问web页面)

rabbitmq-plugins enable rabbitmq_management

这时候我们尝试使用默认的guest用户登录出现权限问题(因为没有给guest设置权限)

  1. 添加一个新用户

创建账号

rabbitmqctl add_user admin 123

设置用户角色

rabbitmqctl set_user_tags admin administrator

设置用户权限

set_permissions [-p <vhostpath>] <user> <conf> <write> <read>
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"

用户 user_admin 具有/vhost1 这个 virtual host 中所有资源的配置、写、读权限
查看当前用户和角色

rabbitmqctl list_users
  1. 利用新用户登录
  2. 重置命令

关闭应用的命令为:

rabbitmqctl stop_app

清除的命令为:

rabbitmqctl reset

重新启动命令为

rabbitmqctl start_app

注意:如果使用的是虚拟机,在主机和虚拟机都能相互ping通的情况下,访问虚拟机的15672端口打不开网页,则有可能是虚拟机的防火墙问题,可以尝试关闭防火墙:文章来源地址https://www.toymoban.com/news/detail-715744.html

systemctl stop firewalld.service

到了这里,关于RabbitMQ学习01的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 消息队列RabbitMQ.01.安装部署与基本使用

    目录  RabbitMQ的作用 Message queue 释义  问题思考  存在的问题 优化方案  案例分析  带来的好处  消息队列特点  Email邮件案例分析 Docker安装部署RabbitMQ 1.下拉镜像 2.运行RabbitMQ  3.打开防火墙端口号并重新运行防火墙 4.容器启动后,可以通过 docker logs 容器 查看日志 6.通过刚才

    2024年01月24日
    浏览(48)
  • SpringBoot-RabbitMQ01-入门介绍(1)

    4 使用消息队列后消息传递方式 5 什么是队列? 队列就像存放了商品的仓库或者商店,是生产商品的工厂和购买商品的用户之间的中转站 6 队列里存储了什么? 在 rabbitMQ 中,信息流从你的应用程序出发,来到 Rabbitmq 的队列,所有信息可以只存储在一个队列中。队列可以存储

    2024年04月25日
    浏览(33)
  • 微服务: 01-rabbitmq的应用场景及安装(docker)

    目录 1. rabbitmq前言简介:  1.1 RabbitMQ的几个重要作用: - 1.1.1 解耦: - 1.1.2 异步通信: - 1.1.3 流量削峰: - 1.1.4 消息传递的可靠性和持久性: 2. rabbitmq的安装(docker版) - 2.1 docker安装传送门:  linux系统安装docker操作_最实用的操作  - 2.2 docker拉取镜像 - 2.3 打开防火墙 - 2.4 创建挂载

    2024年02月08日
    浏览(37)
  • RabbitMQ学习(五):RabbitMQ持久化

    在上一章内容中我们已经看到了如何处理任务不丢失的情况,但是如何保障当 RabbitMQ 服务停掉后消 息生产者发送过来的消息不丢失呢?默认情况下 RabbitMQ 退出或由于某种原因崩溃时,它将忽视队列 和消息,除非告知它不要这样做。 确保消息不会丢失需要做两件事:我们需

    2024年02月16日
    浏览(42)
  • RabbitMQ学习(二)——Linux下安装RabbitMQ

    1、 先去官网下载RabbitMQ 下载地址 :Downloading and Installing RabbitMQ — RabbitMQ 选择对应的系统版本点击下载,下载后会得到 .rpm 文件   2、下载Erlang RabbitMQ是采用 Erlang语言开发的,所以系统环境必须提供 Erlang环境,需要是安装 Erlang Erlang 和 RabbitMQ 版本对照:RabbitMQ Erlang Version

    2024年02月08日
    浏览(39)
  • MQ学习笔记--(RabbitMQ)

    初识MQ RabbitMQ快速入门 SpringAMQP 同步通讯 异步通讯 MQ常见框架 同步通讯和异步通讯 同步通讯:比如微信视频,同一时间只能跟一个人视频,其他人想跟你视频的话,得等你这个视频结束之后才可以 异步通信:比如微信发消息,发了一个人后,别人可能还没回你,但你还可以

    2024年02月08日
    浏览(33)
  • RabbitMQ学习-延迟队列

    延迟队列 背:也就是给队列设置个过期时间,然后到时间消息变成死信,消费死信队列中的消息就行,再没什么玩意,演示队列优化就是不给队列这只TTL,再生产者代码中消息里面设置消息TTL, 因为 RabbitMQ 只会检查第一个消息是否过期 ,如果过期则丢到死信队列, 如果第

    2024年02月07日
    浏览(30)
  • RabbitMq深度学习

    什么是RabbitMq? RabbitMQ是一个开源的消息队列中间件,它实现了高级消息队列协议(AMQP)。它被广泛用于分布式系统中的消息传递和异步通信。RabbitMQ提供了一种可靠的、可扩展的机制来传递消息,使不同的应用程序能够相互之间进行通信。它支持多种编程语言和平台,并且具

    2024年02月10日
    浏览(25)
  • RabbitMQ学习笔记

    Broker:接受和分发消息的应用,例如RabbitMQ Server Virtual host:出于多租户和安全因素设计的,把AMQP的基本组件划分到一个虚拟的分组中,类似于网络中的namespace概念。当多个不同的用户使用同一个RabbitMQ server提供的服务时,可以划分出多个vhost,每个用户在自己的vhost创建exchang

    2024年01月17日
    浏览(24)
  • rabbitMQ的学习

    MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了 MQ 之后,消息发送上游

    2024年02月22日
    浏览(19)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包