最近摸了一波大鱼,所以我又跑回来更新文章了
0.前言
最近搭建了RabbitMQ的服务器,所以通过文章来记录一下自己的搭建过程。
RabbitMQ 是实现AMQP(高级消息队列协议)的开源消息中间件,其拥有许多非常不错的特点。
一、Erlang环境的搭建
01. 下载软件包
Github下载可能会有点慢,可以去别的地方找一下对应的安装包
wget -c https://github.com/rabbitmq/erlang-rpm/releases/download/v23.3.4.11/erlang-23.3.4.11-1.el7.x86_64.rpm
注:文件名的.el后面的对应的就是centos几,如.el7就是centos7
02.安装erlang
rpm -ivh erlang-23.3.4.11-1.el7.x86_64.rpm
二、下载RabbitMQ
01.下载软件包
wget -c https://download.fastgit.org/rabbitmq/rabbitmq-server/releases/download/v3.9.13/rabbitmq-server-3.9.13-1.el7.noarch.rpm
02.安装软件包
yum install rabbitmq-server-3.9.13-1.el7.noarch.rpm
03.启动并查看状态
service rabbitmq-server start
service rabbitmq-server status
04.开启RabbitMQ的Web管理系统
rabbitmq-plugins enable rabbitmq_management
05.设置用户名密码
添加用户:rabbitmqctl add_user admin admin
添加权限:rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
修改角色:rabbitmqctl set_user_tags admin administrator
设置完以后输入账号:admin,密码:admin登录进入管理界面
三、实例程序开发
01.添加RabbitMQ依赖
新建项目,打开pom.xml,在依赖中添加:
com.rabbitmq
amqp-client
4.1.0
02.编写生产者部分代码
新建一个MQSender.java类,具体实现代码如下:
package xyz.feiyueha.rabbithelloworld;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import java.util.Scanner;
public class MQSender {
private final static String QUEUE_NAME = "helloMQ";//定义队列名字
public static void main(String[] args){
try {
//建立连接和通道
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("192.168.241.128");//这里改成你的服务器的地址
factory.setUsername("admin");//设置用户名密码
factory.setPassword("admin");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
//为通道指明队列
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
String message = "Hello World!\nHello RabbitMQ!";
//发布消息
channel.basicPublish("", QUEUE_NAME, null, message.getBytes("UTF-8"));
System.out.println("Message sent:{" + message + "}");
System.out.println("Please input your message you want to sent:");
String input = new Scanner(System.in).nextLine();
channel.basicPublish("", QUEUE_NAME, null, input.getBytes("UTF-8"));
System.out.println("Message sent:{" + input + "}");
//关闭连接
channel.close();
connection.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
03.编写消费者部分代码
新建一个MQConsumer.java类,具体实现代码如下:
package xyz.feiyueha.rabbithelloworld;
import com.rabbitmq.client.*;
import java.io.IOException;
public class MQConsumer {
private final static String QUEUE_NAME = "helloMQ";//定义队列名字
public static void main(String[] args){
try {
//建立连接和通道
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("192.168.241.128");//这里改成你的服务器的地址
factory.setUsername("admin");//设置用户名密码
factory.setPassword("admin");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
System.out.println("Start to wait message...");
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("Received message:{" + message + "}");
}
};
channel.basicConsume(QUEUE_NAME, true, consumer);
}catch (Exception e){
e.printStackTrace();
}
}
}
04.运行并测试编写的代码
效果图如下:
成功发送并接收消息。