安装步骤
1 准备:
yum install
build-essential openssl openssl-devel unixODBC unixODBC-devel
make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz
最好在此先新建一个文件夹,命令mkdir 文件夹名称,统一放在一起
2 下载:
wget www.rabbitmq.com/releases/erlang/erlang-18.3-1.el7.centos.x86_64.rpm
rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpm
wget http://repo.iotti.biz/CentOS/7/x86_64/socat-1.7.3.2-5.el7.lux.x86_64.rpm
rpm -ivh socat-1.7.3.2-5.el7.lux.x86_64.rpm
wget www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server-3.6.5-1.noarch.rpm
rpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm
安装完毕
1.启动
systemctl start rabbitmq-server.service
2.查看启动状态
systemctl status rabbitmq-server.service
3.添加开机启动
systemctl enable rabbitmq-server.service
添加管理用户并开启rabbitmq的web管理界面
# rabbitmqctl add_user admin admin
# rabbitmqctl set_user_tags admin administrator
# rabbitmqctl set_permissions -p / admin '.*' '.*' '.*'
# rabbitmq-plugins enable rabbitmq_management
访问http://ip:15672
登录账号密码:admin/admin
启动/查看状态和停止上面安装完毕,启动成功后访问,http://ip+15672
如果不能远程访问该链接,注意查看自己的防火墙是不是开着,最好只开放端口
1:查看防火状态
systemctl status firewalld
service iptables status
2:暂时关闭防火墙
systemctl stop firewalld
service iptables stop
3:永久关闭防火墙
systemctl disable firewalld
chkconfig iptables off
4:重启防火墙
systemctl enable firewalld
service iptables restart
rabbitmq初始化用户名:guest 密码:guest
注意:guest只允许localhost登录,也就是说如果是远程访问的,那一定会登录失败
解决guest只能本地登录的问题
在你安装rabbitmq文件路径下
//到达路径
cd /etc/rabbitmq/
//新建一个文件
touch rabbitmq.config
//添加
[{rabbit, [{loopback_users, []}]}].
//保存重启rabbitmq
再次访问即可。
代码案例
1.直接往队列里写,不通过交换机
pom文件
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
生产者
package com.portal;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
public class Production {
public static void main(String[] args) {
ConnectionFactory factory = new ConnectionFactory();
Connection connection = null;
Channel channel = null;
try {
factory.setHost("192.168.65.150");
connection = factory.newConnection();
channel = connection.createChannel();
//声明一个队列,可在RabbitMQ管理页面先创建好,但是没有必要,这里可以直接创建一个队列
channel.queueDeclare("messageQueue", false, false, false, null);
//向队列写入信息
for (int i = 1; i < 5; i++) {
channel.basicPublish("","messageQueue",null,new String("收到请回复" + i).getBytes());
}
} catch (IOException e) {
e.printStackTrace();
} catch (TimeoutException e) {
e.printStackTrace();
}finally {
if (channel != null) {
try {
channel.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
}
}
写入成功之后,看一下RabbitMQ管理页面,有四条我们刚刚写入的
消费者
package com.portal;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Consumer;
import com.rabbitmq.client.DefaultConsumer;
import com.rabbitmq.client.Envelope;
import com.rabbitmq.client.AMQP.BasicProperties;
public class Consumers {
public static void main(String[] args) {
ConnectionFactory factory = new ConnectionFactory();
Connection connection = null;
Channel channel = null;
try {
factory.setHost("192.168.65.150");
connection = factory.newConnection();
channel = connection.createChannel();
channel.queueDeclare("messageQueue", false, false, false, null);
while (true) {
//一旦有消息进入队列就会触发
DefaultConsumer consumer = new DefaultConsumer(channel) {
@Override
public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties,
byte[] body) throws IOException {
String message = new String(body, "utf-8");
System.out.println(message);
};
};
//监听队列
boolean autoAck = true;
channel.basicConsume("messageQueue", autoAck, consumer);
}
} catch (IOException e) {
e.printStackTrace();
} catch (TimeoutException e) {
e.printStackTrace();
}
}
}