安装:
第一步. 安装Socat
在线安装依赖环境:
直接运行:
yum install gcc
yum install socat
yum install openssl
yum install openssl-devel
第二步 安装Erlang
在虚拟机新建文件夹,将压缩包传入文件夹,然后进入文件夹
解压:
rpm -ivh erlang-22.0.7-1.el7.x86_64.rpm
第三步 安装RabbitMQ
上传压缩包,将压缩包放在上一步同一个文件夹;
rpm -ivh rabbitmq-server-3.7.17-1.el7.noarch.rpm
第四步 开启管理界面及配置
# 开启管理界面
rabbitmq-plugins enable rabbitmq_management# 配置远程可使用guest登录mq
cd /usr/share/doc/rabbitmq-server-3.7.17cp rabbitmq.config.example /etc/rabbitmq/rabbitmq.config
# 修改配置文件
vi /etc/rabbitmq/rabbitmq.config
修改文件:
第五步 启动
centos6用这个命令:
/sbin/service rabbitmq-server restartcentos7用这个命令:
systemctl start rabbitmq-server
第六步 配置虚拟主机及用户
RabbitMQ在安装好后,可以访问
http://ip地址:15672
;其自带了guest/guest的用户名和密码;如果需要创建自定义用户;那么也可以登录管理界面后,如下操作:
登陆成功接界面:
使用idea连接
使用普通的maven工程连接测试:
(1) simple 简单模式
P: 一个生产者
C: 一个消费者
Q: 队列
创建一个maven工程:
添加依赖:
<dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.13.1</version> <scope>compile</scope> </dependency>
定义生产者代码:
public class Test01 {
public static void main(String[] args) throws Exception{
ConnectionFactory factory = new ConnectionFactory();
//设置rabbitMQ服务器的地址 默认localhost
factory.setHost("192.168.92.241");
//设置rabbitMQ的端口号 默认5672
factory.setPort(5672);
//设置账号和密码 默认guest
factory.setUsername("guest");
factory.setPassword("guest");
//设置虚拟主机名 默认为 /
factory.setVirtualHost("/");
//获取连接通道
Connection connection = factory.newConnection();
//获取channel信道
Channel channel = connection.createChannel();
//创建队列
/**
* 如果该队列名不存在则自动创建,存在则不创建
* String queue,队列名
* boolean durable,是否持久化
* boolean exclusive,(独占)声明队列同一时间只能保
证一个连接,且该队列只有被这一个连接使用。
* boolean autoDelete,是否自动删除
* Map<String, Object> arguments: 其他参数
* */
channel.queueDeclare("simple_queue",true,false,false, null);
//发送消息到队列
/**
* String exchange,把消息发给哪个交换机--简单模式没
有交换机""
* String routingKey,消息绑定的路由key 如果为简单模
式 默认写为队列名称
* BasicProperties props, 消息的属性
* byte[] body: 消息的内容
*/
String msg="hello world";
channel.basicPublish("","simple_queue",null,msg.getBytes());
connection.close();
}
}
测试:
启动后进入RabbitMQ的ui界面,
定义消费者代码
public class Testxfz1 {
public static void main(String[] args) throws Exception{
ConnectionFactory factory = new ConnectionFactory();
//设置rabbitMQ服务器的地址 默认localhost
factory.setHost("192.168.92.241");
//设置rabbitMQ的端口号 默认5672
factory.setPort(5672);
//设置账号和密码 默认guest
factory.setUsername("guest");
factory.setPassword("guest");
//设置虚拟主机名 默认为 /
factory.setVirtualHost("/");
//获取连接通道
Connection connection = factory.newConnection();
//获取channel信道
Channel channel = connection.createChannel();
//监听队列
/**
* String queue,监听的队列名称
* autoAck:是否自动确认消息
* Consumer callback: 监听到消息后触发的回调函数
*/
DefaultConsumer consumer = new DefaultConsumer(channel){
@Override
/*一旦有消息就会触发该方法*/
//body:表示消息的内容
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
System.out.println("接受的消息内容:"+new String(body));
}
};
channel.basicConsume("simple_queue",true,consumer);
}
}
注意: 不要关闭消费者连接对象,因为他要实时监听消息,生产者每发送消息,他都能及时获取。