安装单机版RabitMQ,java操作rabitmq案例(来自同学给的资料,并做升级到最新版本修改,补充问题修改)

本文详细介绍了如何在Linux环境下安装Erlang和RabbitMQ,包括配置环境变量、启动服务、管理插件及远程访问等步骤,并提供了Java客户端的依赖和示例代码,演示了如何发送消息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、安装、常见操作

1、安装环境
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
2、安装erlang
wget http://erlang.org/download/otp_src_21.0.tar.gz
#解压
tar xvf otp_src_21.0.tar.gz
cd otp_src_21.0
#配置 '--prefix'指定的安装目录
./configure --prefix=/usr/local/erlang --with-ssl -enable-threads -enable-smmp-support -enable-kernel-poll --enable-hipe --without-javac
#安装
make && make install
#配置erlang环境变量
#erlang
export ERLANG_HOME=/usr/local/erlang
export PATH=$PATH:$ERLANG_HOME/bin
3、安装RabbitMQ
1)下载 https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.7/rabbitmq-server-generic-unix-3.7.7.tar.xz
2)安装
解压rabbitmq,官方给的包是xz压缩包,所以需要使用xz命令
xz -d rabbitmq-server-generic-unix-3.7.7.tar.xz
#xz解压后得到.tar包,再用tar命令解压
tar -xvf rabbitmq-server-generic-unix-3.7.7.tar
#移动目录 看个人喜好
cp -rf ./rabbitmq_server-3.7.7 /usr/local/
cd /usr/local/
#修改文件夹名
mv rabbitmq_server-3.7.7 rabbitmq-3.7.7
#开启管理页面插件
cd ./rabbitmq-3.7.7/sbin/
./rabbitmq-plugins enable rabbitmq_management
#添加环境变量
#rabbitmq
export RABBITMQ_HOME=/usr/local/rabbitmq_server-3.7.7
export PATH=$PATH:$RABBITMQ_HOME/sbin
3)启动(选择后台启动)
#启动命令,该命令ctrl+c后会关闭服务
./rabbitmq-server
#在后台启动Rabbit
./rabbitmq-server -detached
#关闭服务
./rabbitmqctl stop
#关闭服务(kill) 找到rabbitmq服务的pid   [不推荐]
ps -ef|grep rabbitmq
kill -9 ****
4)常见操作
客户端默认端口5672
管理网站http://192.168.248.11:15672 (改成你的IP)

a)常见操作
https://blog.csdn.net/kk185800961/article/details/55214474
# 以下创建名为vh的vhost,创建了test用户,密码是test,角色(tag)是management,vh被赋予给test帐号,拥有.*权限
rabbitmqctl add_vhost vh  
rabbitmqctl add_user test test  
rabbitmqctl set_user_tags test management  
rabbitmqctl set_permissions -p vh test ".*" ".*" ".*" 
# 常见tag(角色)
management :访问 management plugin;  
policymaker :访问 management plugin 和管理自己 vhosts 的策略和参数;  
monitoring :访问 management plugin 和查看所有配置和通道以及节点信息;  
administrator :一切权限;
#日志文件
/usr/local/rabbitmq_server-3.7.7/var/log/rabbitmq/rabbit@mini1.log

远程操作的时候,报如下错误:
这里写图片描述

解决办法是:
rabbitmq从3.3.0开始禁止使用guest/guest权限通过除localhost外的访问。我的是3.7

如果想使用guest/guest通过远程机器访问,需要在rabbitmq配置文件中(找到/rabbitmq_server-3.7.7/ebin下面的rabbit.app文件)中设置
loopback_users为[]。

找到/rabbitmq_server-3.7.7/ebin下面的rabbit.app文件文件完整内容如下(注意后面的半角句号):
找到:loopback_users里的<<”guest”>>删除。
这里写图片描述
[{rabbit, [{loopback_users, []}]}].

然后重启 (如果有服务的话)
systemctl restart rabbitmq-server.service
搞定

登录进去之后:
这里写图片描述

二、Java端操作

<dependency>
    <groupId>com.rabbitmq</groupId>
    <artifactId>amqp-client</artifactId>
    <version>5.4.1</version>
</dependency>
package com.wyf.test.rabbitmqtest;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.TimeoutException;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

public class Send {
    /*
     * 定义一个队列“hello”
     */
    private final static String QUEUE_NAME = "hello";
    private final static String BROKER_IP = "192.168.248.11";
    private final static int BROKER_PORT = 5672;// rabbitmq 默认端口5672
    private final static String BROKER_USERNAME = "rabbitadmin";
    private final static String BROKER_PASSWORD = "123456";
    private final static String VHOST = "test1";
    public static void main(String[] argv) throws IOException, TimeoutException{
        //创建一个连接
        ConnectionFactory factory = new ConnectionFactory();
        //连接本地,如果需要指定到服务,需在这里指定IP
        factory.setHost(BROKER_IP);
        factory.setUsername(BROKER_USERNAME);
        factory.setPassword(BROKER_PASSWORD);
        factory.setPort(BROKER_PORT);
        factory.setVirtualHost(VHOST);
        Connection connection = factory.newConnection();
        //创建一个通道
        Channel channel = connection.createChannel();
        //申明通道发送消息的队列,把消息发送至消息队列‘hello’
        channel.queueDeclare(QUEUE_NAME, false, false, false, null);
        String message = "Hello World!" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
        //Declaring a queue is idempotent - 如果队列不存在则会创建一个队列 
        //消息内容为byte array, so可以自己随意编码
        channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
        System.out.println(" [x] Sent '" + message + "'");
        //消息发送完成后,关闭通道和连接
        channel.close();
        connection.close();
    }
}

另外一个可以正确安装的地址:
https://blog.csdn.net/lzxlfly/article/details/79406929

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涂作权的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值