【RabbitMQ】ubuntu下RabbitMQ安裝與簡單使用
阿新 • • 發佈:2019-01-08
參考連結:
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);
}
}