RabbitMQ入门教程
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轮询分发