1.5 RabbitMQ-速入门demo

本文基于慕课网-阿神老师的课程-RocketMQ核心技术精讲与高并发抗压实战,仅作为个人的学习
记录

使用idea快速创建一个spring boot项目,在pom文件中添加amqp-client jar包依赖

<dependency>
		<groupId>com.rabbitmq</groupId>
		<artifactId>amqp-client</artifactId>
		<version>3.6.5</version>
</dependency>

1.创建Constant类用于存储RocketMQ 的IP、端口、用户名、密码等关键信息

public class Constant {

    public static String HOST = "192.168.193.128";

    public static int PORT = 5672;

    public static String USERNAME = "root";

    public static String USERPASS = "root";
}

2.编写Produce生产者类

package com.star.movie.quickstart;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.star.movie.common.Constant;

/**
 * @Description:生产者demo
 * @author:kaili
 * @Date: 2019-04-21 22:11
 **/
public class Producer {
    public static void main(String[] args) throws Exception {
        //1 创建一个ConnectionFactory, 并进行配置
        ConnectionFactory connectionFactory = new ConnectionFactory();
        connectionFactory.setHost(Constant.HOST);
        connectionFactory.setPort(Constant.PORT);
        connectionFactory.setUsername(Constant.USERNAME);
        connectionFactory.setPassword(Constant.USERPASS);
        connectionFactory.setVirtualHost("/");

        //2 通过连接工厂创建连接
        Connection connection = connectionFactory.newConnection();

        //3 通过connection创建一个Channel
        Channel channel = connection.createChannel();

        //4 通过Channel发送数据
        for(int i=0; i < 5; i++){
            String msg = "Hello RabbitMQ!";
            //1 exchange   2 routingKey
            channel.basicPublish("", "test001", null, msg.getBytes());
        }

        //5 记得要关闭相关的连接
        channel.close();
        connection.close();
    }
}

3.编写消费者类

package com.star.movie.quickstart;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.QueueingConsumer;
import com.rabbitmq.client.QueueingConsumer.Delivery;
import com.star.movie.common.Constant;

/**
 * @Description:消费者demo
 * @author:kaili
 * @Date: 2019-04-21 22:10
 **/
public class Consumer {
    public static void main(String[] args) throws Exception {

        //1 创建一个ConnectionFactory, 并进行配置
        ConnectionFactory connectionFactory = new ConnectionFactory();
        connectionFactory.setHost(Constant.HOST);
        connectionFactory.setPort(Constant.PORT);
        connectionFactory.setVirtualHost("/");
        connectionFactory.setUsername(Constant.USERNAME);
        connectionFactory.setPassword(Constant.USERPASS);
        //2 通过连接工厂创建连接
        Connection connection = connectionFactory.newConnection();

        //3 通过connection创建一个Channel
        Channel channel = connection.createChannel();

        //4 声明(创建)一个队列
        String queueName = "test001";
        channel.queueDeclare(queueName, true, false, false, null);

        //5 创建消费者
        QueueingConsumer queueingConsumer = new QueueingConsumer(channel);

        //6 设置Channel
        channel.basicConsume(queueName, true, queueingConsumer);

        while(true){
            //7 获取消息
            Delivery delivery = queueingConsumer.nextDelivery();
            String msg = new String(delivery.getBody());
            System.err.println("消费端: " + msg);
            //Envelope envelope = delivery.getEnvelope();
        }

    }
}

4.运行Consumer代码观察RabbitMQ Management

生成了一个test001的队列,观察test001队列
在这里插入图片描述
该队列没有与对应的交换机绑定,是RabbitMQ默认交换机绑定处理的。
5.关闭消费者端代码开启生产者Producer 端代码,观察RabbitMQ Management
在这里插入图片描述
和我们代码中一样,发送了5条消息到RabbitMQ的test001消息队列,等待消费者消费。
6.启动消费者端代码
在这里插入图片描述
消费者端消费了消息,继续观察管理平台test001 queue
在这里插入图片描述
消息已经消费完成

以上就是通过amqp-client创建的一个简单的生产者消费者代码过程。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章