RabbitMQ
安装Rabbitmq
1.
sudo apt-get install erlang-nox
2.安装rabbitmq
安装前需要配置rabbitmq.list到etc/apt/source.list.d目录下
配置文件:
## Provides modern Erlang/OTP releases ## ## Replace $distribution with the name of the Ubuntu release used. ## On Debian, "deb/ubuntu" should be replaced with "deb/debian" deb [signed-by=/usr/share/keyrings/io.cloudsmith.rabbitmq.E495BB49CC4BBE5B.gpg] https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/deb/ubuntu $distribution main deb-src [signed-by=/usr/share/keyrings/io.cloudsmith.rabbitmq.E495BB49CC4BBE5B.gpg] https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/deb/ubuntu $distribution main ## Provides RabbitMQ ## ## Replace $distribution with the name of the Ubuntu release used. ## On Debian, "deb/ubuntu" should be replaced with "deb/debian" deb [signed-by=/usr/share/keyrings/io.cloudsmith.rabbitmq.9F4587F226208342.gpg] https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/deb/ubuntu $distribution main deb-src [signed-by=/usr/share/keyrings/io.cloudsmith.rabbitmq.9F4587F226208342.gpg] https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/deb/ubuntu $distribution main
更新源
sudo apt-get update
安装
sudo apt-get install rabbitmq -server
查看状态
systemctl status rabbitmq-server.service 或者 service rabbitmq-server status
启动服务
systemctl start rabbitmq-server.service 或者 service rabbitmq-server start
停止服务
systemctl stop rabbitmq-server.service 或者 service rabbitmq-server stop
重启服务
systemctl restart rabbitmq-server.service 或 service rabbitmq-server restart
安装插件
进入目录:
cd /usr/lib/rabbitmq/bin
sudo ./rabbitmq-plugins enable rabbitmq_management
重启服务
systemctl restart rabbitmq-server.service 或 service rabbitmq-server restart
访问:
http://ip:15672 使用guest/guest登录
RabbitMQ用户角色及权限控制
角色 | 描述 |
---|---|
none | 不能访问 management plugin |
management | 普通管理员用户可以通过AMQP做的任何事列出自己可以通过AMQP登入的virtual hosts 查看自己的virtual hosts中的queues, exchanges 和 bindings查看和关闭自己的channels 和 connections查看有关自己的virtual hosts的“全局”的统计信息,包含其他用户在这些virtual hosts中的活动。 |
policymaker | 策略制定者management可以做的任何事查看、创建和删除自己的virtual hosts所属的policies和parameters |
monitoring | 监控者management可以做的任何事列出所有virtual hosts,包括他们不能登录的virtual hosts查看其他用户的connections和channels查看节点级别的数据如clustering和memory使用情况查看真正的关于所有virtual hosts的全局的统计信息 |
administrator | 管理员policymaker和monitoring可以做的任何事创建和删除virtual hosts查看、创建和删除users查看创建和删除permissions关闭其他用户的connections |
创建用户并授权
创建用户
rabbitmqctl add_user username password
授予角色
rabbitmqctl set_user_tags username 角色名称
如果多个角色,用空格隔开
修改密码
rabbitmqctl change_password username password
删除用户
rabbitmqctl delete_user username
查看用户
rabbitmqctl list_users
IDEA中测试简单的rabbitmq生产者消费者
生产者:
package com.by; import com.rabbitmq.client.AMQP; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.concurrent.TimeoutException; /** * description: * author:zcx * lenovo * 时间:2022.05.31.16.58 */ public class Publisher { public static void main(String[] args) throws IOException, TimeoutException { //第一步 创建连接 ConnectionFactory factory=new ConnectionFactory(); //第二步设置mq服务器连接信息 factory.setVirtualHost("erp");//设置虚拟主机,默认是/ factory.setHost("192.168.12.63");//设置mq服务器地址 factory.setUsername("admin");//访问虚拟主机的用户名 默认是guest factory.setPassword("zcx123");//访问虚拟主机的用户资源 factory.setPort(5672);//mq服务器端口号 //获取连接 Connection conn=factory.newConnection(); //第二步 在连接上创建信道 Channel channel=conn.createChannel(); //声明队列名称 String queue_name="hello"; //第三步 通过信道 声明队列 /** * 参数1 queue 队列名称 * 参数2 durable 声明队列是否是持久化的,false重启mq队列会消失 * 参数3 exclvusive 是否独占的连接,否则只能同一个连接读取消息 * 参数4 outoDelete 队列在不使用时删除 */ channel.queueDeclare(queue_name,false,false,false,null); //第四步 发送消息 String msg="订单详情"; /** * 参数1 交换器的名称 简单模式下默认为”“ 默认使用交换器 AMQP.default * 参数2 路由器 在简单模式下直接指明队列名称 * 参数4 消息体 */ AMQP.BasicProperties prop=new AMQP.BasicProperties("","utf-8",null,1,1,"","","","1001",null,"","1","0010",""); //prop.builder().appId("0100").userId("1").messageId("1").messageId("100").build(); channel.basicPublish("",queue_name,prop,msg.getBytes()); System.out.println("生产者发送消息:"+msg); //关闭连接 conn.close(); } }
消费者:
package com.by; import com.rabbitmq.client.*; import java.io.IOException; import java.util.concurrent.TimeoutException; /** * description: * author:zcx * lenovo * 时间:2022.05.31.19.25 */ public class Consumer { public static void main(String[] args) throws IOException, TimeoutException { //第一步 创建连接 ConnectionFactory factory=new ConnectionFactory(); //第二步设置mq服务器连接信息 factory.setVirtualHost("erp");//设置虚拟主机,默认是/ factory.setHost("192.168.12.63");//设置mq服务器地址 factory.setUsername("admin");//访问虚拟主机的用户名 默认是guest factory.setPassword("zcx123");//访问虚拟主机的用户资源 factory.setPort(5672);//mq服务器端口号 //获取连接 Connection conn=factory.newConnection(); //第二步 在连接上创建信道 Channel channel=conn.createChannel(); //声明队列名称 String queue_name="hello"; //第三步 通过信道 声明队列 channel.queueDeclare(queue_name,false,false,false,null); System.out.println("消费者开始消费:"); DeliverCallback callback=new DeliverCallback(){ @Override public void handle(String s, Delivery delivery) throws IOException{ System.out.println("s>>>>>>>>>"+s); BasicProperties properties= delivery.getProperties(); System.out.println(properties.getAppId()); System.out.println(properties.getUserId()); System.out.println("接收消息:"+new String(delivery.getBody())); } }; //从队列中读取消息 channel.basicConsume(queue_name,true,callback,var->{}); //关闭连接 //消费者的连接不能关闭 //conn.close(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律