doker安装RabbitMQ以及用java连接

news/2025/2/25 16:14:30

目录

doker安装:

 RabitMq安装:

java%E9%93%BE%E6%8E%A5-toc" style="margin-left:0px;"> java链接


doker安装:

参考链接(非常详细):

docker安装以及部署_docker bu shuminio_春风与麋鹿的博客-CSDN博客

安装好后开启doker

java">//启动docker服务
systemctl start docker
//停止docker服务
systemctl stop docker
//重启docker服务
systemctl restart docker
//查看docker服务状态
systemctl status docker

 RabitMq安装:

1. 拉取do'ke中的rabbitmq镜像

java">docker pull rabbitmq:3.7.16-management

2.启动

java">docker run -d --hostname my-rabbit  -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 5672:5672 -p 15672:15672  rabbitmq:3.7.16-management
 
 
参数解释:
RABBITMQ_DEFAULT_USER=admin(账号为admin)可以自己随意改
RABBITMQ_DEFAULT_PASS=admin(登录密码为admin)可以自己随意改
-p 5672:5672 :rabbitmq的默认端口,映射到虚拟机5672端口,程序中,访问用
-p 15672:15672:rabbitmq的浏览器访问登录界面端口,映射到虚拟机15672端口,浏览器访问端口

3.浏览器访问

输入虚拟机ip和端口号进行访问

java%E9%93%BE%E6%8E%A5"> java链接

链接之前在防火墙中开发5672端口,否则会连接超时

java">#关闭防火墙
systemctl stop firewalld
#查看开启了哪些端口号
firewall-cmd --list-ports
#添加端口号
sudo firewall-cmd --permanent --zone=public --add-port=5672/tcp
#操作防火墙后要重启防火墙
firewall-cmd --reload

生产者:

java">public class Send {
    //Ctrl+Shift+U大写转换
    public static final String QUEUE_NAME = "hello";

    //发消息
    public static void main(String[] args) throws IOException, TimeoutException {
        //创建一个工厂
        ConnectionFactory factory = new ConnectionFactory();
        //工厂IP连接RabbitMQ的队列
        factory.setHost("192.168.29.129");
        //port可不设置,默认5672
//        factory.setPort(5672);
        //用户名
        factory.setUsername("admin");
        //密码
        factory.setPassword("admin");
        //创建连接
        Connection connection = factory.newConnection();
        //获取信道
        Channel channel = connection.createChannel();
        /**
         * 生成一个队列
         * 1.队列名称
         * 2.队列里面的消息是否持久化(磁盘)默认情况消息存储在内存中
         * 3.该队列是否只供一个消费者进行消费是否进行消息共享,false可以多个消费者消费 true:只能一个消费者消费
         * 4.是否自动删除最后一个消费者端开连接以后该队一句是否自动删除 true自动删除 false不自动删除
         * 5.其它参数
         */
        channel.queueDeclare(QUEUE_NAME,false,false,false,null);
        //发消息
        String message = "Hello World!";
        //初次使用
        /**
         * 发送一个消费
         * 1.发送到哪个交换机
         * 2.路由的Key值是哪个本次是队列的名称
         * 3.其它参数信息
         * 4.发送消息的消息体
         */
        channel.basicPublish("",QUEUE_NAME,null,message.getBytes());
        System.out.println("消息发送完毕");

    }
}

启动:

 页面显示消息已发送成功

 消费者:

java">public class Recive {
    public static final String QUEEN_NAME = "hello";

    //接收消息
    public static void main(String[] args) throws Exception {
        //创建连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("192.168.29.129");
        //port可不设置,默认5672
        factory.setPort(5672);
        //用户名
        factory.setUsername("admin");
        //密码
        factory.setPassword("admin");
        Connection connection = factory.newConnection();
        //用连接创建信道
        Channel channel = connection.createChannel();

        /**
         * 消费者消费消息
         *1.消费哪个队列
         * 2.消费成功之后是否要自动应答 true 代表的自动应答 false 代表手动应答
         * 3.消费者未成功消费的回调
         * 4.消费者取消消费的回调
         */
        //声明: 接收消息
        DeliverCallback deliverCallback = (consumerTag,message) ->{
            System.out.println(message);
            System.out.println(new String(message.getBody()));
        };
        //取消消息时的回调
        CancelCallback cancelCallback = consumerTag ->{
            System.out.println("消费消息被中断");
        };

        channel.basicConsume(QUEEN_NAME,true,deliverCallback,cancelCallback);


    }
}

启动:消息接收成

 

 


http://www.niftyadmin.cn/n/699210.html

相关文章

【计算机网络】数据链路层之随机接入-CSMA/CA协议(无线局域网)

1.概念 2.无线局域网可否实现碰撞检验CD 3.方案 CSMA/CA 碰撞避免 4. 两种帧间间隔 IFS 为什么需要等待DIFS? 为什么需要等待SIFS? 为什么还要退避一段时间才能使用信道? 5.退避算法 使用退避算法的情况 退避算法 举例 6.信道预约 7.虚拟载波监听 8.题目 9.解析 …

<List<Map<String, Object>>> List Map 转 List<T>工具类

工具类&#xff1a; package com.itheima.util;import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import java.util.Map;public class ListMapToBeanUtils {/*** List<Map<String, Object>>转List<T>*/public static &…

记录 windows11 qemu安装 麒麟操作系统的经历

因为本人供职的公司&#xff0c;要求国产化环境很多的软件&#xff0c;同时为了方便docker部署&#xff0c; 所以开启了 qemu虚拟aarch64环境的经历&#xff0c;用的软件如下&#xff1a; 有需要的私信&#xff0c;存在了&#xff0c;阿里云盘&#xff0c;百度云盘没有会员就是…

第45步 深度学习图像识别:Nasnet建模(Tensorflow)

基于WIN10的64位系统演示 一、写在前面 &#xff08;1&#xff09;Nasnet NASNet是由Google Brain团队在2017年提出的一种神经网络架构搜索&#xff08;Neural Architecture Search&#xff0c;简称NAS&#xff09;的结果。NAS是一种用于自动化设计深度学习模型的技术。在NA…

Nacos(一):简介 如何安装 服务注册与发现 集群 权重 与Eureka区别

一、简介 1、应用场景 当服务调用越来越多&#xff0c;服务的地址需要管理起来&#xff0c;并实现动态调用而不是硬编码在接口中。此时需要一个注册中心来帮助我们管理服务。 流程如下&#xff1a; 商品微服务注册IP和端口到注册中心订单微服务先从注册中心获取到商品微服务…

DAY36——贪心part5

1. class Solution {public int eraseOverlapIntervals(int[][] intervals) {Arrays.sort(intervals, (a,b)-> {return Integer.compare(a[0],b[0]);});int count 1;for(int i 1;i < intervals.length;i){if(intervals[i][0] < intervals[i-1][1]){ //和上一个区间…

ARM实验-RM主程序调用ARM/C语言子程序

一、实验名称&#xff1a;ARM主程序调用ARM/C语言子程序 二、实验目的&#xff1a; 了解ARM应用程序框架。了解ARM汇编程序函数和C语言程序函数相互调用时&#xff0c;遵循的ATPCS标准&#xff1b;了解和掌握ARM汇编程序调用C语言程序函数的基本方法&#xff1b;了解和掌握AR…

git常用命令之Push

9. Push 命令作用延展阅读git push --set-upstream origin releasegit push -u origin release 为缩写版本1. .git/config配置文件会追加如下关联关系&#xff0c;[branch “release”] remote origin merge refs/heads/release故后续可以直接执行git push2. .git\refs\remo…