RibbitMQ安裝
下載ERL https://pan.baidu.com/s/1c1UaGpU
下載MQ http://www.rabbitmq.com/releases/rabbitmq-server/
安裝erl
yum install -y erlang-19.0.4-1.el6.x86_64.rpm
安裝mq
yum install -y rabbitmq-server-3.6.0-1.noarch.rpm
#開啟web管理插件
rabbitmq-plugins enable rabbitmq_management
#啟動服務
service rabbitmq-server start
#添加用戶和刪除guest
rabbitmqctl add_user admin 123456
rabbitmqctl set_user_tags admin administrator
rabbitmqctl delete_user guest
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
WEB訪問:http://IP:15672/
用戶名:admin 密碼:123456
清空一個隊列的數據
rabbitmqctl -p ${vhost-name} purge_queue ${queue-name}
Service rabbitmq-server start 啟動
Service rabbitmq-server stop 關閉
Service rabbitmq-server restart 重啟
設置開機啟動
Chkconfig rabbitmq-server on
RibbitMQ-WEBUI的使用
添加用戶
添加vhost
Vhost就類似於數據庫
一般以斜杠開頭
授權:
點進去
這樣就授權成功了
Overview
提供了一些可視化的信息,監控
Connections 連接
可以看到哪個用戶連的哪個數據庫
Channels通道
Exchanges交換機
Simple簡單隊列
創建項目
導入依賴
Pom.xml |
<dependencies>
<dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>4.0.2</version> </dependency>
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.10</version> </dependency>
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.5</version> </dependency>
<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> </dependency>
</dependencies>
|
獲取MQ連接
寫工具類 |
package com.cxl.rbmq.util;
import java.io.IOException; import java.util.concurrent.TimeoutException;
import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory;
public class ConnectionUtil {
/** * 獲取MQ的連接 * @return * @throws TimeoutException * @throws IOException */ public static Connection getConnection() throws IOException, TimeoutException { //定義一個連接工廠 ConnectionFactory factory = new ConnectionFactory();
//設置服務地址 factory.setHost("192.168.190.129");
//AMQP port factory.setPort(5672);
//vhost factory.setVirtualHost("/");
//設置用戶名 factory.setUsername("admin"); //設置密碼 factory.setPassword("123456"); return factory.newConnection(); }
}
|
發送消息(提供者)
package com.cxl.rbmq.simple;
import java.io.IOException; import java.util.concurrent.TimeoutException;
import com.cxl.rbmq.util.ConnectionUtil; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; public class Send {
private static final String QUEUE_NAME ="test_simple_queue";
public static void main(String[] args) throws IOException, TimeoutException {
//獲取一個連接 Connection connection = ConnectionUtil.getConnection(); //從連接中獲取一個通道 Channel channel = connection.createChannel(); //創建隊列聲明 channel.queueDeclare(QUEUE_NAME, false, false, false, null);
String mString = "hello simple!";
channel.basicPublish("", QUEUE_NAME, null, mString.getBytes());
System.out.println("--send msg:"+mString);
channel.close(); connection.close(); }
}
|
發送消息成功
獲取消息(消費者)
接收到了消息
(擴展)新的javaAPI
簡單隊列不足
Round-robin輪詢分發