安装及配置
# 下载并执行erlang安装脚本
curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash
yum install erlang
# 下载并执行rabbitmq-server安装脚本
curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash
yum install rabbitmq-server
# 开启管理界面
rabbitmq-plugins enable rabbitmq_management
# 添加用户
rabbitmqctl add_user <username> <password>
# 设置标签
rabbitmqctl set_user_tags <username> administrator
# 设置权限
# rabbitmqctl [--node <node>] [--longnames] [--quiet] set_permissions [--vhost <vhost>] <username> <conf_regx> <write_regx> <read_regx>
rabbitmqctl set_permissions --vhost "/" <username> ".*" ".*" ".*"
Java测试
初始化
vim rabbitmq-demo.sh
#!/bin/bash
project=rabbit-demo && mkdir $project && cd $project && gradle --no-daemon init --type=java-application
rm -rf gradle gradlew gradlew.bat
cat << EOF > build.gradle
group = 'com.yan'
version = '0.0.1-SNAPSHOT'
apply plugin: "java"
apply plugin: "idea"
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
repositories {
maven { url "http://maven.aliyun.com/nexus/content/groups/public" }
}
dependencies {
compile group: 'com.rabbitmq', name: 'amqp-client', version: '5.7.2'
}
EOF
cat << EOF > idea.sh
gradle cleanidea idea --refresh-dependencies
EOF
bash idea.sh
生产者
Prod.java
public class Prod {
static final String QUEUE_NAME = "XX";
static final ConnectionFactory CONNECTION_FACTORY = getConnectionFactory();
private static ConnectionFactory getConnectionFactory() {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("XX.XX.XX.XX");
factory.setUsername("username");
factory.setPassword("password");
return factory;
}
public static void main(String[] args) {
try (Connection 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 + "'");
} catch (TimeoutException | IOException e) {
e.printStackTrace();
}
}
}
消费者
Recv.java
public class Recv {
public static void main(String[] argv) throws Exception {
Connection connection = CONNECTION_FACTORY.newConnection();
Channel channel = connection.createChannel();
DeliverCallback deliverCallback = (consumerTag, delivery) -> {
String message = new String(delivery.getBody(), StandardCharsets.UTF_8);
System.out.println(" [x] Received '" + message + "'");
};
channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag -> {
});
}
}
参考: