八、代码实现-自动/手动应答( 二 )


1)下载:wget
2)安装:rpm -ivh -21.3.1-1.el7..rpm
ps1: 如果安装错误:--3.8.8-1.el7..rpm: 不是 rpm 软件包 (或者没有) 。这是因为网络访问较慢 , 有可能下载不全 , 所以如果wget实在有问题 , 可以选择直接登录网站包下载下来 , 再传到linux即可!
ps2:下载的版本el7根据linux来 , 可通过uname -a查看:
安装
1)下载依赖:yum-y socat
2)下载包:wget
3)安装:rpm -ivh --3.8.8-1.el7..rpm
ps:如果安装报错 , 下载不全 , 解决办法如上!启动:start -设置开机自启动:-
ps1:相关命令-关闭: stop
ps2:相关命令-重启:-
ps3:相关命令-插件列表:- list
ps4:相关命令-启动插件:-XXX (XXX为插件名)
ps5:相关命令-停用插件:-XXX查看启动后的情况 :、-
新建一个用户
1)新建用户:admin admin
2)授予管理员权限:admin
3)设置admin可以使用的虚机权限:admin–>-p admin admin ".*" ".*" ".*"查看用户:
重启:-查看页面::15672
输入账号密码:admin/admin
进入该界面说明安装成功(这里因为做了一些代码操作 , 所以界面不是原始的 , 新安装的跟我的有些不同) 六、工作原理图
(生产者) , 即发消息的系统 。(连接通道):与服务器连接的TCP通道(交换机)和queue(队列):消息先发给交换机 , 再由交换机根据规则转发给队列 。一个交换机可以对应多个队列 。如果工作时 , 不省明交换机 , 则会使用默认交换机 。(消费者):即最后消费队列消息的系统 。七、代码实现-简单工作
工作流程
由于我们后续测试都会连接服务器 , 所以这里创建一个公共连接类 。
创建公共连接类
package com.rabbitmqUtils;import com.rabbitmq.client.Channel;import com.rabbitmq.client.Connection;import com.rabbitmq.client.ConnectionFactory;import java.io.IOException;import java.util.concurrent.TimeoutException;/*** @author 天真热* 创建信道* @create 2022-02-08 16:26* @desc**/public class RabbitmqUtils {//队列名称public static final String RABBITMQ_QUEUE = "RABBITMQ_QUEUE";//交换机名称public static final String RABBITMQ_EXCHANGE = "RABBITMQ_EXCHANGE";public static Channel getChannel() throws IOException, TimeoutException {//创建一个连接工厂ConnectionFactory factory = new ConnectionFactory();//工厂ipfactory.setHost("192.168.248.10");//用户名factory.setUsername("admin");//密码factory.setPassword("admin");//创建链接Connection connection = factory.newConnection();//获取信道Channel channel = connection.createChannel();return channel;}}
创建生产者
package com.rabbitmq1;import com.rabbitmq.client.Channel;import com.rabbitmqUtils.RabbitmqUtils;import java.io.IOException;import java.util.concurrent.TimeoutException;/*** @author 天真热* @create 2022-02-08 14:52* @desc**/public class Product {//发消息public static void main(String[] args) throws IOException, TimeoutException, InterruptedException {//获取信道Channel channel = RabbitmqUtils.getChannel();//生成队列,不创建交换机 , 走默认的交换机//1.名称//2.队列消息是否持久化(否:存内存 , 是:存磁盘 。默认否)//3.队列是否只供一个消费者消费 , 默认否//4.最后一个消费者断开连接后 , 是否自动删除 。//5.其他参数channel.queueDeclare(RabbitmqUtils.RABBITMQ_QUEUE, true, false, false, null);//发消息String message = "this is QUEUE_P1";//持续发送消息for (int i = 0; i < 10; i++) {Thread.sleep(1000);//1.交换机 , 简单版本不考虑 , 直接空字符串 , 即默认交换机//2.路由key , 直接写队列名即可//3.参数 , 忽略//4.消息体channel.basicPublish("", RabbitmqUtils.RABBITMQ_QUEUE, null, (message+i).getBytes());}System.out.println("消息发送成功");}}