【RabbitMQ】ubuntu下RabbitMQ安裝與簡單使用


參考鏈接:

1、安裝:

 

https://blog.csdn.net/a295277302/article/details/71246941 https://blog.csdn.net/junzhen_chen/article/details/78459383

2、使用:

https://blog.csdn.net/hzw19920329/article/details/53156015 https://blog.csdn.net/u014308482/article/details/53994401

環境信息:

OS:ubuntu16.04

前期准備:

1、ifconfig、ping命令查看網絡是否正常

2、配置源(即軟件下載地址)

安裝(安裝包方式可以參考參考鏈接中的1鏈接):

1、由於rabbitMq使用erlang語言開發,在安裝rabbitMq之前需要安裝erlang

sudo apt-get install erlang

2、查看erlang版本:

 sudo erl

3、安裝rabbitMq:

sudo apt-get install rabbitmq-server

4、要查看服務器狀態

sudo rabbitmq

5、安裝插件

sudo rabbitmq-plugins enable rabbitmq_manageme

安裝完成后系統默認啟動。

 

添加用戶

 

安裝完成后在rabbitMQ中添加用戶

命令: sudo rabbitmqctl add_user 用戶名 密碼

將用戶設置為管理員(只有管理員才能遠程登錄)

命令:sudo rabbitmqctl set_user_tags 用戶名  administrator

同時為用戶設置讀寫等權限

 

命令:sudo rabbitmqctl set_permissions -p / 用戶名 ".*" ".*" ".*"

安裝完成

使用以下鏈接進入插件提供的管理界面,用戶名密碼為上一步設置的用戶名與密碼(默認密碼官網上找,我忘記了)

http://IP:15672

 

啟動與停止:

 

啟動:sudo rabbitmq-server start
關閉: sudo rabbitmq-server stop
重啟: sudo rabbitmq-server restart

 

簡單使用:

 

1、導入依賴

    <dependencies>
        <!-- https://mvnrepository.com/artifact/com.rabbitmq/amqp-client -->
        <dependency>
            <groupId>com.rabbitmq</groupId>
            <artifactId>amqp-client</artifactId>
            <version>5.0.0</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.amqp</groupId>
            <artifactId>spring-rabbit</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>
    </dependencies>

2、消息生產者

import com.rabbitmq.client.*;

import java.util.HashMap;
import java.util.Map;

/**
 * 消息的生產者
 * 將想要發送的消息加入消息隊列
 * @author ZX
 * 參考鏈接: https://blog.csdn.net/hzw19920329/article/details/53156015
            https://blog.csdn.net/u014308482/article/details/53994401
 */
public class Producer {
    public  static  void main(String[]args) throws Exception{
        //1、創建鏈接對象
        ConnectionFactory factory = new ConnectionFactory();
        //rabbitmq所在ip,用戶名密碼
        factory.setHost("192.168.0.17");
        factory.setUsername("admin1");
        factory.setPort(5672);
        factory.setPassword("123456");
        Connection connection = factory.newConnection();
        //創建一個頻道
        Channel channel = connection.createChannel();
        //聲明一個dirent模式的交換機
        /**channel.exchangeDeclare(String exchange,String type,boolean durable,boolean autodelete....)
         參數1:exchange 交換機對象的名稱
         參數2 type
         BuiltinExchangeType. DIRECT("direct"),定向發送消息
         BuiltinExchangeType. FANOUT("fanout"),會向所有的queue廣播所有收到的消息。如log系統可使用此模式
         BuiltinExchangeType. TOPIC("topic"),
         BuiltinExchangeType. HEADERS("headers");
         參數3:durable:如果設置了true,本交換機在重啟后也會生存(實際上不一定靠譜,設置為true就好)
         參數n:。。。。。。。
         */
        channel.exchangeDeclare("exchange_name", BuiltinExchangeType.DIRECT,true);
        //聲明一個非持久化自動刪除的隊列,如果該隊列不在被使用就刪除他 zhe
        channel.queueDeclare("queue_name",false,false,true,null);
        //將綁定到改交換機
        channel.queueBind("queue_name","exchange_name","route_key");
        //聲明一個消息頭部
        AMQP.BasicProperties.Builder builder= new AMQP.BasicProperties.Builder();
        Map<String,Object> header=new HashMap<String, Object>();
        header.put("charset","utf-8");
        builder.headers(header);
        AMQP.BasicProperties basicProperties=builder.build();
        //將消息發出去
        channel.basicPublish("exchange_name","route_key",false,basicProperties,"消息的內容".getBytes());
        for (int i=0;i<100;i++){
            channel.basicPublish("exchange_name","route_key",false,basicProperties,("消息的內容"+i).getBytes());
        }
    }

}

3、消息消費者:

import com.rabbitmq.client.*;
import com.rabbitmq.client.BuiltinExchangeType;
import java.io.IOException;

public class Consumer {
    public  static  void main(String[]args) throws Exception{
        //1、創建鏈接對象
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("192.168.0.17");
        factory.setUsername("admin1");
        factory.setPort(5672);
        factory.setPassword("123456");
        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();
        //聲明一個dirent模式的交換機
        /**channel.exchangeDeclare(String exchange,String type,boolean durable,boolean autodelete....)
                參數1:exchange 交換機對象的名稱
                參數2 type
                BuiltinExchangeType. DIRECT("direct"),
                BuiltinExchangeType.        FANOUT("fanout"),
                BuiltinExchangeType.    TOPIC("topic"),
                BuiltinExchangeType.    HEADERS("headers");
         參數3:durable:如果設置了true,本交換機在重啟后也會生存(實際上不一定靠譜,設置為true就好)
         參數n:。。。。。。。
        */
        channel.exchangeDeclare("exchange_name",BuiltinExchangeType.DIRECT,true);
        //聲明一個非持久化自動刪除的隊列,如果該隊列不在被使用就刪除他
        channel.queueDeclare("queue_name",false,false,true,null);
        //將綁定到改交換機
        channel.queueBind("queue_name","exchange_name","route_key");
        //創建消費者對象
        com.rabbitmq.client.Consumer consumer = new DefaultConsumer(channel) {
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties,
                                       byte[] body) throws IOException {
                String message = new String(body, "UTF-8");
                System.out.println(" [x] Received '" + message + "'");
            }
        };
        channel.basicConsume("queue_name", true, consumer);
    }
}

 

 

 

 

 
 
 
 

 


免責聲明!

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



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