这里先演示最简单的模型:直连模式。其结构图为:

一个生产者 -> 消息队列 -> 一个消费者

生产者只需要将数据丢进消息队列,而消费者只需要将数据从消息队列中取出,这样就实现了生产者和消费者的消息交互。

  1. 创建一个新的实验环境,即新建一个Virtual Host。

  2. 添加新的虚拟主机之后,我们可以看到,当前admin用户的主机访问权限中新增了刚刚添加的环境。

  3. 查看交换机。

    交换机列表中自动新增了刚刚创建好的虚拟主机相关的预设交换机,一共7个。

    这里首先介绍一下前面两个direct类型的交换机,一个是(AMQP default)还有一个是amq.direct,它们都是直连模式的交换机。

    • 单击(AMQP default)进入详情。

      • (AMQP default)是所有虚拟主机都会自带的一个默认交换机。

      • 此交换机默认绑定到所有的消息队列。

        如果是通过默认交换机发送消息,会根据消息的routingKey(发消息时指定)决定发送给哪个同名的消息队列,同时也不能显式地将消息队列绑定或解绑到此交换机。

      • 此交换机不可删除。

      可以看到,详细信息中,特征(Features)项为:durable:true,表明当前交换机特性是持久化的,也就是说就算机器重启,此交换机也会保留;如果不是持久化,那么一旦重启就会消失。

      在列表中看到D的字样,就表示此交换机是持久化的。

      所有自动生成的交换机都是持久化的。

    • 单击amq.direct进入详情。

      这个交换机和默认交换机类型一致,并且也是持久化的。

      但是可以看到它是具有绑定关系的,如果没有指定的消息队列绑定到此交换机上,那么这个交换机无法正常将信息存放到指定的消息队列中,也是根据routingKey寻找消息队列(可以自定义)。

  4. 查看消息队列。目前没有消息队列,所以需要创建一个。

    • Virtual host:虚拟主机。这里选择自建的,在这个虚拟主机下创建此消息队列。
    • Type:类型。选择Classic,也就是经典类型。
    • Name:名称。可以随便取,这里取test。
    • Durability:持久化。这里选择Durable,即持久的。
    • Auto delete:自动删除。这里选择No,如果选Yes,即代表需要至少有一个消费者连接到这个队列,一旦所有与这个队列连接的消费者都断开时,就会自动删除此队列。
    • Arguments:参数。暂时不用设置。
  5. 点击创建的消息队列名称,可查看详情。

    详细信息中包括队列的当前负载状态、属性、消息队列占用的内存,消息数量等。

    从绑定信息可以发现,该队列默认绑定了交换机,就是前面介绍的(AMQP default)默认交换机。

    现在需要将此消息队列绑定到amq.direct,这样就可以通过此交换机向此消息队列发送消息了:

  6. 回到交换机。这里也显示了与队列的绑定关系。

    向该消息队列中发送一条消息:

  7. 回到队列。

    可以看到已经有一条消息了:

  8. 获取消息。

    选择Get messages,可以获取消息:

    • Ack Mode:接收消息的模式。有4种,分别为:

      • Nack message requeue true:获取到消息的内容;不会去消费消息。
      • Automatic ack:获取到消息的内容;会去消费消息。
      • Reject requeue true:拒绝获取消息;消息重新入队。
      • Reject requeue false:拒绝获取消息;消息不重新入队,将会被删除。

      这里使用默认的即第1种就可以了,这样只会查看消息,但是不会取出,消息依然存在于消息队列中。

    • Encoding:编码格式。使用默认的就可以。

    • Messages:要生效的操作数量。选择1就行。

    消息已经成功读取到。

  9. 除了在交换机发送消息给消息队列之外,也可以直接在消息队列这里发。

    • Delivery mode:推送方式。

      • Non-persistent:不持久化。如果服务器重启,此消息删除。
      • Persistent:持久化。如果服务器重启,此消息依然存在。
    • Headers:头部信息。
    • Properties:属性。
    • Payload:载荷的消息。
  10. 如果不需要再使用此消息队列了,可以手动对其进行删除或是清空。


  • 环境

    • Ubuntu 22.04
    • RabbitMQ 3.11.10
    • Erlang 25.3

RabbitMQ 03 直连模式-可视化界面的更多相关文章

  1. RabbitMQ入门-Routing直连模式

    Hello World模式,告诉我们如何一对一发送和接收消息: Work模式,告诉我们如何多管齐下高效的消费消息: Publish/Subscribe模式,告诉我们如何广播消息 那么有没有灵活强一点的 ...

  2. docker swarm 集群及可视化界面的安装及配置

    docker swarm 集群及可视化界面的安装及配置 2016-12-14 16:08:46 标签:swarm consul registrator 原创作品,允许转载,转载时请务必以超链接形式标明 ...

  3. RabbitMQ详解(三)------RabbitMQ的五种模式

    RabbitMQ详解(三)------RabbitMQ的五种模式 1.简单队列(模式) 上一篇文章末尾的实例给出的代码就是简单模式. 一个生产者对应一个消费者!!! pom.xml ​ 必须导入Rab ...

  4. CentOS7安装GNOME可视化界面和如何配置IP地址

    本人在虚拟机安装 CentOS7 1,检查一下我们已经安装的软件以及可以安装的软件,用命令 yum grouplist 2,然后安装我们需要的图形界面软件,GNOME(GNOME Desktop) 这 ...

  5. 基于 HTML5 的 PID-进料系统可视化界面

    前言 随着工业物联网和互联网技术的普及和发展,人工填料的方式已经逐渐被机械设备取代.工业厂商减小误操作.提升设备安全以及追求高效率等制造特点对设备的要求愈加高标准.严要求.同时机械生产以后还需遵从整个 ...

  6. Docker搭建Portainer可视化界面

    为了解决上回说到的问题,在网上找了找 找到了一个 非常有好的可视化界面管理工具. Portainer 是什么东西 (开源轻量级) Portainer是Docker的图形化管理工具,提供状态显示面板.应 ...

  7. Python可视化界面编程入门

    Python可视化界面编程入门具体实现代码如所示: (1)普通可视化界面编程代码入门: import sysfrom PyQt5.QtWidgets import QWidget,QApplicati ...

  8. SpringBoot整合RabbitMQ实现六种工作模式

    RabbitMQ主要有六种种工作模式,本文整合SpringBoot分别介绍工作模式的实现. 前提概念 生产者 消息生产者或者发送者,使用P表示: 队列 消息从生产端发送到消费端,一定要通过队列转发,使 ...

  9. awt可视化界面上传数据到mysql,jsp通过jdbc方式查询数据库,并将结果打印在网页上

    今天尝试写一个小demo实现下之前看过的代码,目的了解不同文件的数据访问,掌握如何获取前台数据,如何将数据库的数据在前端页面展示. awt可视化界面可已实现提交数据到数据库,也可查询数据在控制台打印. ...

  10. GDB-Dashboard-GDB可视化界面

    项目地址 https://github.com/cyrus-and/gdb-dashboard 项目介绍 gdb-dashboard是一个gdb的可视化界面,可以通过web或者终端来现实可视化信息,支 ...

随机推荐

  1. Jina AI x 矩池云Matpool |神经搜索引擎,一键构建

    图片.视频.语音等非结构化数据在快速增长,随着深度学习技术的不断升级,非结构化数据的搜索也逐渐形成可能.在这样的背景下,专注于神经搜索技术的商业开源软件公司--Jina AI,提出了神经搜索 (Neu ...

  2. 【Azure 事件中心】如何查看Event Hub的生产者或者是消费者端的IP地址呢?

    问题描述 哪些客户端 IP 正在向/从Azure Event Hub发送/接收事件?如何来查看Event Hub的生产者端,消费者端的IP地址呢? 问题解答 如果需要查看Event Hub 服务端的日 ...

  3. RocketMQ(4) 消息的消费

    消费者从Broker中获取消息的方式有两种:pull拉取方式和push推动方式.消费者组对于消息消费的模 式又分为两种:集群消费Clustering和广播消费Broadcasting. 1. 获取消息 ...

  4. Java 常用类 于 StringBuffer 和 StringBuilder的使用 + String三者的异同

    1 package com.bytezero.stringclass; 2 3 import org.junit.Test; 4 5 /** 6 * 关于 StringBuffer 和 StringB ...

  5. 牛客周赛 Round 31(A~F)

    目录 A B C D E F A #include <bits/stdc++.h> #define int long long #define rep(i,a,b) for(int i = ...

  6. 深入理解与应用CSS clip-path 属性

    clip-path clip-path是什么 clip-path 是一个CSS属性,允许开发者创建一个剪切区域,从而决定元素的哪些部分可见,哪些部分会被隐藏.通过定义这个剪切路径(clipping p ...

  7. 手爱图仕Aputure MC RGB摄影补光灯体验测评

    前记  作为一个智能硬件设备狂兼智能硬件方案提供商,工作就是和各种智能硬件打交道.最近无意入手了一个爱图仕Aputure MC RGB摄影补光灯.顺便体验了几天,既然体验了,肯定要写一个体验结果的.这 ...

  8. day01-项目介绍和功能实现

    项目练习01 1.项目介绍 这是一个简单的项目练习,用于掌握新学习的SpringBoot技术. 项目操作界面 ● 技术栈 Vue3+ElementPlus+Axios+MyBatisPlus+Spri ...

  9. 00-【K210】API资料、电气接线图、PCB文件

    K210的接口说明文档 API接口文档: 链接:https://pan.baidu.com/s/1mlzYRJYQIeHSEMysp_v4cg?pwd=pjmv 提取码:pjmv 2.原理图.PCB文 ...

  10. JS(简单数据类型、数据类型转换)

    一. 数据类型简介 1.1 为什么需要数据类型 在计算机中,不同的数据所需占用的存储空间是不同的,为了便于把数据分成所需内存大小不同的数据,充分利用存储空间,于是定义了不同的数据类型.简单来说,数据类 ...