RabbitMQ入門小Demo


一、RabbitMQ:降低主程序線程壓力,是一種非阻塞模式的分布式消息隊列服務器,由生產者生產到RabbitMQ,消費者消費

二、入門小Demo

 1、首先引入rabbitMQ jar包

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

 2、生產者代碼:

package com.rabbitmq.test.rabbitmq_demo.test;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
public class Producer {

    // 隊列名稱
    private final static String QUEUE_NAME = "Jacky";

    public static void main(String[] args) throws IOException, TimeoutException {
        // 創建連接工廠
        ConnectionFactory factory = new ConnectionFactory();
        // 設置RabbitMQ主機
        factory.setHost("192.168.88.11");
        //factory.setUsername("admin");
        //factory.setPassword("admin");
        //factory.setVirtualHost("/");

        // 創建連接
        Connection connection = factory.newConnection();
        // 創建信道
        Channel channel = connection.createChannel();
        // 聲明一個隊列:
        channel.queueDeclare(QUEUE_NAME, true, false, false, null);
        // 要發送的信息
        String message = "Hello RabbitMQ!";
        // 發送消息到隊列中
        channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
        System.out.println(" [x] Sent '" + message + "'");
        // 關閉信道
        channel.close();    
        // 關閉連接
        connection.close();
    }
}    

注1:queueDeclare第一個參數表示隊列名稱、第二個參數為是否持久化(true表示是,隊列將在服務器重啟時生存)、第三個參數為是否是獨占隊列(創建者可以使用的私有隊列,斷開后自動刪除)、第四個參數為當所有消費者客戶端連接斷開時是否自動刪除隊列、第五個參數為隊列的其他參數

注2:basicPublish第一個參數為交換機名稱、第二個參數為隊列映射的路由key、第三個參數為消息的其他屬性、第四個參數為發送信息的主體

 3、消費者代碼:

  

package com.rabbitmq.test.rabbitmq_demo.test;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.QueueingConsumer;

public class Consumer {
    // 隊列名稱
    private final static String QUEUE_NAME = "Jacky";

    public static void main(String[] argv) throws Exception {
        // 創建連接工廠
        ConnectionFactory factory = new ConnectionFactory();
        // 設置RabbitMQ主機
        factory.setHost("192.168.88.11");
//        factory.setVirtualHost("/");
//        factory.setUsername("admin");
//        factory.setPassword("admin");
        // 獲取連接
        Connection connection = factory.newConnection();
        // 獲取信道
        Channel channel = connection.createChannel();

        // 聲明要關注的隊列
        channel.queueDeclare(QUEUE_NAME, true, false, false, null);
        System.out.println(" [*] Waiting for messages. To exit press CTRL+C");

        // 創建消費者
        QueueingConsumer consumer = new QueueingConsumer(channel);
        // 獲取消息
        channel.basicConsume(QUEUE_NAME, true, consumer);
        while (true) {
            // 消費者接收消息
            QueueingConsumer.Delivery delivery = consumer.nextDelivery();
            // 獲取消息正文
            String message = new String(delivery.getBody());
            System.out.println(" [x] Received '" + message + "'");
        }
    }
}

 4、運行結果

生產者:

消費者:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM