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創建的一個簡單的生產者消費者代碼過程。

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