• 消息队列系列5 - RabbitMQ安装与测试 (荣耀典藏版)


     

    目录

    前言

    1.bbitMQ环境搭建

    2.RabbitMQ测试

    2.1.添加账号

    2.2.编码实测


    前言

    大家好,我是月夜枫,我又来了!!!!

    最近写的消息队列系列文章,当时只讲解了消息队列的选型,以及RabbitMQ、Kafka、RocketMQ的基本原理,现在选择RabbitMQ进行实战方面的讲解,其实主要是为了将之前的“债”给还上。

    1.bbitMQ环境搭建

    因为我用的是Mac,所以直接可以参考官网:

    https://www.rabbitmq.com/install-homebrew.html

    需要注意的是,一定需要先执行:

    brew update
    

    然后再执行:

    brew install rabbitmq
    

    之前没有执行brew update,直接执行brew install rabbitmq时,会报各种各样奇怪的错误,其中“403 Forbidde”居多。

    但是在执行“brew install rabbitmq”,会自动安装其它的程序,如果你使用源码安装Rabbitmq,因为启动该服务依赖erlang环境,所以你还需手动安装erlang,但是目前官方已经一键给你搞定,会自动安装Rabbitmq依赖的所有程序,是不是很棒!

    最后执行成功的输出如下:

    启动服务:

    1. # 启动方式1:后台启动
    2. brew services start rabbitmq
    3. # 启动方式2:当前窗口启动
    4. cd /usr/local/Cellar/rabbitmq/3.8.19
    5. rabbitmq-server

    在浏览器输入:

    http://localhost:15672/
    

    会出现RabbitMQ后台管理界面(用户名和密码都为guest):

     

    通过brew安装,一行命令搞定,真香!

    2.RabbitMQ测试

    2.1.添加账号

    首先得启动mq

    1. ## 添加账号
    2. ./rabbitmqctl add_user admin admin
    3. ## 添加访问权限
    4. ./rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
    5. ## 设置超级权限
    6. ./rabbitmqctl set_user_tags admin administrator

    2.2.编码实测

    因为代码中引入了java 8的特性,pom引入依赖:

    1. <dependency>
    2.     <groupId>com.rabbitmqgroupId>
    3.     <artifactId>amqp-clientartifactId>
    4.     <version>5.5.1version>
    5. dependency>
    6. <plugins>
    7.     <plugin>
    8.         <groupId>org.apache.maven.pluginsgroupId>
    9.         <artifactId>maven-compiler-pluginartifactId>
    10.         <configuration>
    11.             <source>8source>
    12.             <target>8target>
    13.         configuration>
    14.     plugin>
    15. plugins>

    开始写代码:

    1. public class RabbitMqTest {
    2.     //消息队列名称
    3.     private final static String QUEUE_NAME = "hello";
    4.     @Test
    5.     public void send() throws java.io.IOException, TimeoutException {
    6.         //创建连接工程
    7.         ConnectionFactory factory = new ConnectionFactory();
    8.         factory.setHost("127.0.0.1");
    9.         factory.setPort(5672);
    10.         factory.setUsername("admin");
    11.         factory.setPassword("admin");
    12.         //创建连接
    13.         Connection connection = factory.newConnection();
    14.         //创建消息通道
    15.         Channel channel = connection.createChannel();
    16.         //生成一个消息队列
    17.         channel.queueDeclare(QUEUE_NAME, truefalsefalsenull);
    18.         for (int i = 0; i < 10; i++) {
    19.             String message = "Hello World RabbitMQ count: " + i;
    20.             //发布消息,第一个参数表示路由(Exchange名称),为""则表示使用默认消息路由
    21.             channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
    22.             System.out.println(" [x] Sent '" + message + "'");
    23.         }
    24.         //关闭消息通道和连接
    25.         channel.close();
    26.         connection.close();
    27.     }
    28.     @Test
    29.     public void consumer() throws java.io.IOException, TimeoutException {
    30.         //创建连接工厂
    31.         ConnectionFactory factory = new ConnectionFactory();
    32.         factory.setHost("127.0.0.1");
    33.         factory.setPort(5672);
    34.         factory.setUsername("admin");
    35.         factory.setPassword("admin");
    36.         //创建连接
    37.         Connection connection = factory.newConnection();
    38.         //创建消息信道
    39.         final Channel channel = connection.createChannel();
    40.         //消息队列
    41.         channel.queueDeclare(QUEUE_NAME, truefalsefalsenull);
    42.         System.out.println("[*] Waiting for message. To exist press CTRL+C");
    43.         DeliverCallback deliverCallback = (consumerTag, delivery) -> {
    44.             String message = new String(delivery.getBody(), "UTF-8");
    45.             System.out.println(" [x] Received '" + message + "'");
    46.         };
    47.         channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag -> {});
    48.     }
    49. }

    执行send()后控制台输出:

    1. [x] Sent 'Hello World RabbitMQ count: 0'
    2. [x] Sent 'Hello World RabbitMQ count: 1'
    3. [x] Sent 'Hello World RabbitMQ count: 2'
    4. [x] Sent 'Hello World RabbitMQ count: 3'
    5. [x] Sent 'Hello World RabbitMQ count: 4'
    6. [x] Sent 'Hello World RabbitMQ count: 5'
    7. [x] Sent 'Hello World RabbitMQ count: 6'
    8. [x] Sent 'Hello World RabbitMQ count: 7'
    9. [x] Sent 'Hello World RabbitMQ count: 8'
    10. [x] Sent 'Hello World RabbitMQ count: 9'

    执行consumer()后:

     示例中的代码讲解,可以直接参考官网:https://www.rabbitmq.com/tutorials/tutorial-one-java.html

    最后说一句(求关注,别白嫖我)

    如果这篇文章对您有所帮助,或者有所启发的话,帮忙关注一下,您的支持是我坚持写作最大的动力。

    求一键三连:点赞、转发、在看。

  • 相关阅读:
    mybatis执行自带update方法遇到的坑
    【力扣1876】长度为三且各字符不同的子字符串
    springboot写一个简单的接口样例
    06 Spring_AOP
    数据的使用、表关系的创建、Django框架的请求生命周期流程图
    常用的全国快递物流查询api接口对接
    Oracle——常用的几种函数(含案例)
    C#基础|OOP学习总结、优质的OOP程序有啥特点。
    create® 3入门教程-自主充电
    pycharm 断点调试python Flask
  • 原文地址:https://blog.csdn.net/weixin_48321993/article/details/126401030