1.安装Erlang
yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget
- 1
- 配置erlang环境变量:
vi /etc/profile //在底部添加以下内容
#set erlang environment
ERL_HOME=/usr/local/erlang
PATH=$ERL_HOME/bin:$PATH
export ERL_HOME PATH
source /etc/profile //生效
测试一下是否安装成功,在控制台输入命令erl
erl //如果进入erlang的shell则证明安装成功,退出即可。
2.安装RabbitMQ
下载安装RabbitMQ:
- 下载安装
cd /usr/local //切换到计划安装RabbitMQ的目录,我这里放在/usr/local
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.1/rabbitmq-server-generic-unix-3.6.1.tar.xz //下载RabbitMQ安装包
xz -d rabbitmq-server-generic-unix-3.6.1.tar.xz
tar -xvf rabbitmq-server-generic-unix-3.6.1.tar
解压后多了个文件夹rabbitmq-server-3.6.1 ,重命名为rabbitmq以便记忆。
mv rabbitmq_server-3.6.1/ rabbitmq
- 1
- 配置rabbitmq环境变量:
vi /etc/profile
#set rabbitmq environment
export PATH=$PATH:/usr/local/rabbitmq/sbin
source /etc/profile
- 1
- 2
- 3
- 4
- 启动服务:
rabbitmq-server -detached //启动rabbitmq,-detached代表后台守护进程方式启动。
- 1
- 2
查看状态,如果显示如下截图说明安装成功:
rabbitmqctl status
配置网页插件:
首先创建目录,否则可能报错:
mkdir /etc/rabbitmq
- 1
然后启用插件:
rabbitmq-plugins enable rabbitmq_management
- 1
配置防火墙:
配置linux 端口 15672 网页管理 5672 AMQP端口:
firewall-cmd --permanent --add-port=15672/tcp
firewall-cmd --permanent --add-port=5672/tcp
systemctl restart firewalld.service
- 1
- 2
- 3
现在你在浏览器中输入服务器IP:15672 就可以看到RabbitMQ的WEB管理页面了,是不是很兴奋,可是你没有账号密码,别急。
3.开启服务
在开始菜单中,点击RabbitMQ Service Start开开启服务,可以到服务管理器中去确认是否开启成功。下图是当前机器上找到的相关服务,状态为已启动。
打开命令行命令行,进入RabbitMQ的安装目录: cd rabbitmq_server-3.5.2\sbin
,输入 rabbitmqctl status , 如果出现以下的图,说明安装是成功的,并且说明现在RabbitMQ Server已经启动了,运行正常。
4.配置RabbitMQ
1.在开始菜单中找到RabbitMQ Command Promt,打开控制台2 输入命令
1
|
rabbitmq-plugins enable rabbitmq_management
|
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
public class Send {
//队列名称
private final static String QUEUE_NAME = "hello";
public static void main(String[] argv) throws java.io.IOException, TimeoutException
{
/**
* 创建连接连接到MabbitMQ
*/
ConnectionFactory factory = new ConnectionFactory();
//设置MabbitMQ所在主机ip或者主机名
factory.setHost("localhost");
//创建一个连接
Connection connection = factory.newConnection();
//创建一个频道
Channel channel = connection.createChannel();
//指定一个队列
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
//发送的消息
String message = "hello world!";
//往队列中发出一条消息
channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
System.out.println(" [x] Sent '" + message + "'");
//关闭频道和连接
channel.close();
connection.close();
}
}
接收端代码
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.QueueingConsumer;
public class Recv {
//队列名称
private final static String QUEUE_NAME = "hello";
public static void main(String[] argv) throws java.io.IOException,
java.lang.InterruptedException, TimeoutException
{
//打开连接和创建频道,与发送端一样
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
//声明队列,主要为了防止消息接收者先运行此程序,队列还不存在时创建队列。
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
System.out.println(" [*] Waiting for messages. To exit press CTRL+C");
//创建队列消费者
QueueingConsumer consumer = new QueueingConsumer(channel);
//指定消费队列
channel.basicConsume(QUEUE_NAME, true, consumer);
while (true)
{
//nextDelivery是一个阻塞方法(内部实现其实是阻塞队列的take方法)
QueueingConsumer.Delivery delivery = consumer.nextDelivery();
String message = new String(delivery.getBody());
System.out.println(" [x] Received '" + message + "'");
}
}
}