本地部署开源消息代理软件RabbitMQ并实现远程访问本地服务端

RabbitMQ系列(一)启动及网页、外网访问配置 RabbitMQ 启动及网页、外网访问配置 1.安装 安装过程就不重复了,直接pip install或者 brew install都可以,简单,安装完毕后进入文件夹 /usr/local/opt/rabbitmq/sbin 命令文件夹可以看到有一下命令: iazijie sbin $ pwd /usr/local/opt/rabbitmq/sbin jiazijie sbin $ ll total 1096 -r-xr-xr-x 1 jiazijie admin 468026 7 5 2018 阅读详情

前言

本文主要介绍如何在Ubuntu系统环境下,安装RabbitMQ与cpolar内网穿透工具实现无公网IP随时随地远程访问本地部署的MQ服务端。

RabbitMQ是一个在 AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最主流的消息中间件之一。

由erlang开发的AMQP(Advanced Message Queue 高级消息队列协议 )的开源实现,由于erlang 语言的高并发特性,性能较好,本质是个队列,FIFO 先入先出,里面存放的内容是message.

1.安装erlang 语言

由于rabbitMQ是erlang语言实现的,所以我们需要安装erlang

sudo apt-get install erlang-nox

2.安装rabbitMQ

安装最新版rabbitMQ

sudo apt-get install rabbitmq-server

image-20230227142614479

查看rabbitMQ状态,active(running)表示在线

sudo systemctl status rabbitmq-server

image-20230227142756286

设置访问MQ用户名账号和密码,admin表示账号(可自定义),123456表示密码(可自定义)

sudo rabbitmqctl add_user admin 123456

image-20230228152150865

设置上面admin用户的角色,administrator表示是最高管理员

sudo rabbitmqctl set_user_tags admin administrator

image-20230228153113674

设置admin角色权限

sudo rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"

image-20230228153441392

以上信息设置好后,我们往下走。

3. 安装内网穿透工具

接着我们使用cpolar穿透本地MQ服务,使得远程可以进行访问连接,cpolar支持http/https/tcp协议,不限制流量,操作简单,无需公网IP,也无需路由器。

cpolar官网:https://www.cpolar.com/

3.1 安装cpolar内网穿透

  • cpolar 安装(国内使用)
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
  • 或 cpolar短链接安装方式:(国外使用)
curl -sL https://git.io/cpolar | sudo bash
  • 查看版本号
cpolar version
  • token认证

登录cpolar官网后台,点击左侧的验证,查看自己的认证token,之后将token贴在命令行里

cpolar authtoken xxxxxxx

20230116114805

  • 向系统添加服务
sudo systemctl enable cpolar
  • 启动cpolar服务
sudo systemctl start cpolar

正常显示为active则表示服务为正常在线启动状态

3.2 创建HTTP隧道

在ubuntu系统本地安装cpolar内网穿透之后,在ubuntu浏览器上访问本地9200端口,打开cpolar web ui界面:http://127.0.0.1:9200。

点击左侧仪表盘的隧道管理——创建隧道,由于rabbitMQ中默认的是5672端口,因此我们要来创建一条http隧道,指向5672端口:

  • 隧道名称:可自定义,注意不要重复
  • 协议:tcp
  • 本地地址:5672
  • 域名类型:选择随机域名
  • 地区:选择China VIP

点击创建

image-20230227174954395

打开在线隧道列表,查看随机公网tcp地址,使用下面随机的tcp公网地址,即可远程连接MQ

image-20230228114252675

4. 公网远程连接

maven坐标

<dependency>
			<groupId>com.rabbitmq</groupId>
			<artifactId>amqp-client</artifactId>
			<version>5.10.0</version>
		</dependency>

这里使用java 测试使用上面公网地址进行连接,编写发布者

       ConnectionFactory factory = new ConnectionFactory();
        //cpolar公网地址
        factory.setHost("1.tcp.cpolar.cn");
        //公网地址对于的端口号
        factory.setPort(24889);

        //用户名和密码
        factory.setUsername("admin");
        factory.setPassword("123456");
        Connection connection = null;
        Channel channel = null;
        try {
            // 1.创建连接和通道
            connection = factory.newConnection();
            channel = connection.createChannel();

            // 2.为通道声明exchange和exchange的类型
            channel.exchangeDeclare(EXCHANGE_NAME, BuiltinExchangeType.FANOUT);

            String msg = " hello world";
            // 3.发送消息到指定的exchange,队列指定为空,由exchange根据情况判断需要发送到哪些队列
            channel.basicPublish(EXCHANGE_NAME, "", null, msg.getBytes());
            System.out.println("product send a msg: " + msg);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (TimeoutException e) {
            e.printStackTrace();
        } finally {
            // 4.关闭连接
            if (channel != null) {
                try {
                    channel.close();
                } catch (IOException e) {
                    e.printStackTrace();
                } catch (TimeoutException e) {
                    e.printStackTrace();
                }
            }

            if (connection != null) {
                try {
                    connection.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }


编写消费者


        ConnectionFactory factory = new ConnectionFactory();
        //cpolar公网地址
        factory.setHost("1.tcp.cpolar.cn");
        //公网地址对于的端口号
        factory.setPort(24889);

        //用户名和密码
        factory.setUsername("admin");
        factory.setPassword("123456");
        Connection connection = null;
        Channel channel = null;
        try {
            // 1.创建连接和通道
            connection = factory.newConnection();
            channel = connection.createChannel();

            // 2.为通道声明exchange以及exchange类型
            channel.exchangeDeclare("exchange", BuiltinExchangeType.FANOUT);

            // 3.创建随机名字的队列
            String queueName = channel.queueDeclare().getQueue();

            // 4.建立exchange和队列的绑定关系
            channel.queueBind(queueName, "exchange", "");
            System.out.println(" **** Consumer1 keep alive ,waiting for messages, and then deal them");
            // 5.通过回调生成消费者并进行监听
            Consumer consumer = new DefaultConsumer(channel) {
                @Override
                public void handleDelivery(String consumerTag, Envelope envelope,
                                           com.rabbitmq.client.AMQP.BasicProperties properties, byte[] body) throws IOException {

                    // 获取消息内容然后处理
                    String msg = new String(body, "UTF-8");
                    System.out.println("*********** Consumer1" + " get message :[" + msg + "]");
                }
            };
            // 6.消费消息
            channel.basicConsume(queueName, true, consumer);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (TimeoutException e) {
            e.printStackTrace();
        }

先启动消费者,然后启动发布者,然后消费者控制台输出消费者发送的消息表示成功.我们实现了远程访问MQ。

image-20230228174014355

5.固定公网TCP地址

由于以上创建的隧道使用的是随机地址隧道,地址会在24小时内变化,为了使连接更加稳定,我们还需要固定tcp地址。

5.1 保留一个固定的公网TCP端口地址

登录cpolar官网后台,点击左侧的预留,选择保留的TCP地址。

  • 地区:选择China VIP
  • 描述:即备注,可自定义填写

点击保留

image-20230228175005804

地址保留成功后,系统会生成相应的固定公网地址,将其复制下来

image-20230228175229884

5.2 配置固定公网TCP端口地址

在浏览器上访问9200端口,登录cpolar web ui管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到上面创建的隧道,点击右侧的编辑

image-20230228175405748

修改隧道信息,将保留成功的固定tcp地址配置到隧道中

  • 端口类型:修改为固定tcp端口
  • 预留的tcp地址:填写保留成功的地址

点击更新

image-20230228175516881

隧道更新成功后,点击左侧仪表盘的状态在线隧道列表,找到需要编辑的隧道,可以看到公网地址已经更新成为了固定TCP地址。

image-20230228175557721

更新好后,我们修改代码中的两个参数

     	//cpolar公网地址,改为我们固定的地址
        factory.setHost("5.tcp.vip.cpolar.cn");
        //固定地址对应的端口号
        factory.setPort(13630);

然后我们重新启动消费者,再启动生产者,正常发布和消费消息表示成功

image-20230228175908567

Ubuntu 的RabbitMQ安装 RabbitMQ已经包含在标准的Ubuntu仓库中, 然而,包含的版本通常比最新的RabbitMQ发行版落后很多,可能提供的RabbitMQ版本已经不支持. RabbitMQ团队制作了自己的软件包,并使用Cloudsmith进行分发具体操作可以参考: Installing on Debian and Ubuntu | RabbitMQ由于该种方法安装比较复杂, 学习阶段, 咱们。 阅读详情

相关推荐

rabbitmq 面向消息代理实现远程访问

百科 RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。 原理 RabbitMQ底层是通过Erlang架构来实现的,所以rabbitmqctl会启动Erlang节点,并基于Erlang节点来使用Erlang系统连接RabbitMQ节点,在连接过程中需要正确的Erlang Cookie和节点名称,Erlang节点通过交换Erlang Cookie以获得认证。 部署方案 分别在3台机器上配置/etc/hosts 分别在3台机器上安装erLang和

qq_32265719的博客 538

如何远程访问 RabbitMQ

如何远程访问 RabbitMQ

qq_45760401的博客 8323

RabbitMQ是一个开源的消息代理(Message Broker)服务器,它是基于AMQP(Advanced Message Queuing Protocol)标准的

AMQP是一个专门为消息传递设计的标准化协议,它定义了消息的生产和消费方式、路由规则以及交换机和队列的概念。RabbitMQ作为一个实现AMQP规范的中间件,提供了高效、可靠的消息传递功能,支持多种应用场景,如消息队列、发布/订阅模式等,使得不同应用程序之间的异步通信变得简单易行。RabbitMQ是一个开源的消息代理(Message Broker)服务器,它是基于AMQP(Advanced Message Queuing Protocol)标准的,用于在分布式系统之间可靠地传递消息。

[Blog][Domain] programb.blog.youkuaiyun.com 1567

RabbitMQ远程访问

guest这个用户只能使用localhost登录,而不能使用IP地址登录:远程无法连接可以建立一个新的用户,用于远程链接。

皮特儿的博客 4004

RabbitMQ【部署 01】一篇学会RabbitMQ服务依赖的下载安装及简单使用(首次登录 User can only log in via localhost 问题处理)

来自官网的部分介绍:简单翻译一下:RabbitMQ是部署最广泛的开源消息代理。是轻量级的,易于在本地和云中部署。它支持多种消息传递协议。可以部署在分布式和联邦配置中,以满足大规模、高可用性的需求。运行在许多操作系统和云环境上,并为大多数流行语言提供了广泛的开发工具。

2401_84166497的博客 844

Linux 系统上部署 RabbitMQ

在 Linux 系统上部署 RabbitMQ(一个开源的消息代理)通常包括安装 Erlang(RabbitMQ 的依赖)和 RabbitMQ 本身,并进行基本的配置。以下是一个详细的步骤指南,帮助你在 Linux 上成功部署 RabbitMQ。

m0_58223765的博客 1279

了解开源消息代理RabbitMQ

RabbitMQ是一个消息代理:它接受并转发消息。你可以把它想象成邮局:当你把要寄的邮件放进邮箱时,你可以确定邮递员最终会把邮件送到收件人那里。在这个比喻中,RabbitMQ是一个邮筒、一个邮局和一个邮递员。RabbitMQ和邮局之间的主要区别在于,它不处理纸张,而是接受、存储和转发二进制数据消息。RabbitMQ和一般的消息传递使用了一些术语。生产只不过意味着发送。发送消息的程序是是RabbitMQ中邮箱的名称。虽然消息流经RabbitMQ和你的应用程序,但它们只能存储在队列中。

huaqianzkh的专栏 1432

Ubuntu下安装RabbitMQ

现在您可以使用RabbitMQ来构建分布式系统,并通过消息传递实现应用程序之间的通信。请记住,RabbitMQ具有强大的功能和灵活性,您可以根据自己的需求进行配置和定制。RabbitMQ是一个开源的消息代理,用于在应用程序之间传递消息。在本文中,我们将介绍如何在Ubuntu操作系统上安装RabbitMQ。RabbitMQ是使用Erlang编写的,因此我们需要先安装Erlang。在安装RabbitMQ之前,我们应该首先更新软件包索引。的文件,并将RabbitMQ的软件源添加到该文件中。

VksgShapes的博客 912

【RabbitMQ】Windows下RabbitMQ的安装和部署

RabbitMQ在windows下安装部署

Hanson的博客 4092

【Prometheus】RabbitMQ安装部署,如何通过prometheus监控RabbitMQ

RabbitMQ是一个开源的消息代理和队列服务器,它使用Erlang语言编写并运行在多种操作系统上,如Linux、Windows等。RabbitMQ可以接收、存储和转发消息(也称为“事件”)到连接的客户端。它适用于多种场景,包括异步通信、流量削峰、应用解耦等。本文详述RabbitMQ的安装部署和通过prometheus监控RabbitMQ的方法

景天科技苑 8万+

【AMD显卡在WIndow10/11部署带GPU支持的深度学习环境(Pytorch-DirectML篇)】

这篇是之前Tensorflow-DirectML的姊妹篇,如果对TF感兴趣的可以搜索我的博文。 首先我们丢一个官网地址,但是官网那个会误导新人如果你按那个操作的话。 https://docs.microsoft.com/en-us/windows/ai/directml/gpu-pytorch-windows 这里用我的方法操作: 首先声明一下,因为我的显卡是AMD RX6600,不带XT(性能和RTX3060 12G版本半斤八两),所以目前没有最新的WSL2驱动,如果有了的话欢迎告知我,所以我这里就.

weixin_44029053的博客 2万+

RabbitMQ是一个开源的消息代理和队列服务器

RabbitMQ是一个功能强大、灵活可靠的消息队列系统,适用于各种分布式系统中的消息传递和处理任务。它提供了多种交换机类型、灵活的绑定规则和丰富的API接口,使得用户可以方便地实现消息的路由、分发和处理。RabbitMQ还支持集群和镜像队列等高可用性和容错性功能,确保了消息传递的连续性和可靠性。然而,RabbitMQ的架构和配置相对复杂,需要一定的学习和理解成本。同时,它也会占用较多的系统资源,需要在使用时进行权衡和选择。

MrLi的博客 1535

Ubuntu docker镜像中下载安装 DPABI(DPARSF)

在Ubuntu服务器的docker镜像中用MATLAB运行DPABI(以及使用DPARSF的功能)。

Pandako's Blog 1723

C#使用RabbitMQ-1_Docker部署并在c#中实现简单模式消息代理

在docker中部署RabbitMQ,开启可视化管理界面,通过c#代码分别使用自动模式和手动模式进行消息队列的简单模式进行演示

二十多岁的你迷茫又着急,想要车子,想要房子,想要享受旅行,你那么浮躁,拿什么看透人生! 1411

高等数学/概率论/数理统计/线性代数/离散数学面试-核心概念-问题理解

特征值与特征向量是线性代数中的概念,它们与线性变换有关。在线性变换中,如果存在非零向量 v ,使得当该向量通过变换后,其方向不变,只是长度发生了变化,那么这个向量 v 就是特征向量。而这个长度变化的比例因子,即变换前后向量长度的比值,称为特征值。数学公式表示:通俗易懂的解释:想象一下,你有一个可以伸缩的橡皮筋,这个橡皮筋可以代表一个向量。现在,你有一个特殊的机器,它可以改变橡皮筋的形状,但不会改变它延伸的方向。当你把橡皮筋放入机器中,机器会拉伸或压缩橡皮筋,但橡皮筋的方向保持不变。

m0_64198455的博客 2292

PCL 基于强度的双边滤波【2026最新版】

基于强度信息的双边滤波代码实现、滤波前后点云未出现变化的原因以及获取带有强度pcd点云的方法。本文由优快云点云侠原创,博客长期更新,本文最近一次更新时间为:2026年5月24日。

点云侠的博客 29万+

使用 Docker 部署 RabbitMQ 的详细指南

RabbitMQ 是一个流行的开源消息代理软件,它实现了高级消息队列协议(AMQP)。本文将详细介绍如何使用 Docker 部署 RabbitMQ,并提供一些配置和管理的技巧。为了确保 RabbitMQ 的数据在容器重启或删除后不会丢失,我们使用了 Docker 的卷(volume)功能。RabbitMQ 容器通过指定环境变量的方式进行配置,这比修改配置文件便捷得多。为了防止数据丢失,定期备份 RabbitMQ 的数据是非常重要的。如果尚未安装,可以参考。)登录,即可访问 RabbitMQ 的管理界面。

WenZhang的博客 2万+

CSP-J2019普及组复赛T4:加工零件

CSP-J2020普及组复赛T1:优秀的拆分,广度优先遍历求最短路。

少儿编程乔老师 1854

【云原生 | 27】Docker部署运行开源消息队列实现RabbitMQ

AMQP架构中有两个主要组件:Exchange和Queue,两者都在服务端,又称Broker,由RabbitMQ实现的。客户端通常有Producer和Consumer两种类型

小鹏linux的博客 5万+

PCB层叠结构与阻抗计算

1.Core 和 PP PCB两个重要组成部分:Core 和 Prepreg(半固态片,简称PP)。 如下图所示, Core 的两个表面都铺有铜箔,可作为信号层、电源层、地层等导电层,Core的上下表面之间填充的是固态材料; PP的表面不铺铜,在PCB中起填充作用,其材质是半固体的树脂材料,因此比Core略软一些。 在制作多层板时,需配合使用Core和PP,一般在两个Core 之间应选PP作为填...

sinat_15677011的博客 1万+

模糊控制 (Fuzzy Control) 算法详解及案例分析

模糊控制是一种基于模糊逻辑的控制策略,其核心思想是通过模糊规则和模糊推理实现对复杂系统的控制。模糊控制不依赖于精确的数学模型,而是通过模拟人类的决策过程来处理不确定性和非线性问题。

闲人编程的博客 3658

Linux系统安装部署RabbitMQ教程

RabbitMQ和Erlang的安装部署 简介:RabbitMQ是一个开源的消息代理和队列服务器,它使用Erlang语言编写并运行在多种操作系统上,如Linux、Windows等。RabbitMQ可以接收、存储和转发消息(也称为“事件”)到连接的客户端。它适用于多种场景,包括异步通信、流量削峰、应用解耦等。

是程序喵呀 1819

基于反事实的因果推理Causal inference based on counterfactuals--一万六千字文献详细解读(因果关系的推理应用)【全文总结】

基于反事实的因果推理Causal inference based on counterfactuals--一万六千字文献详细解读(因果关系的推理应用)【全文总结】---来自一位即将入学的准研一,也希望这篇文章能够激励自己不断走下去!!

qq_46044325的博客 4442

Docker部署RabbitMQ

【前言】 Docker : Docker is a set of platform as a service (PaaS) products that use OS-level virtualization to deliver software in packages called containers.[6] Containers are isolated from one another and bundle their own software, libraries and configuratio

m0_67265464的博客 3215

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

RabbitMQ集群部署

RabbitMQ 是开源消息代理软件(有时称为面向消息的中间件),实现了高级消息队列协议(AMQP)。RabbitMQ 服务器是用 Erlang 编程语言编写的,并基于开放电信平台框架构建,以实现集群和故障转移。所有主要编程语言都有可与代理接口的客户端库。关于仲裁队列对于普通集群,队列所在节点如果宕机,队列中的消息就会丢失,因此普通集群只是提高了并发能力,并未实现高可用。要想真正实现高可用,只需要在部署普通集群后创建仲裁队列即可。

IT 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

上一篇: 【网络安全】资产记录工具 Hacker Asset Logger 安装使用详细教程
下一篇: 【网络安全】PostMessage:分析JS实现XSS
秋说
秋说 优质创作者: 编程框架、信息安全技术领域 优质创作者: 编程框架、信息安全技术领域
博客等级 码龄4年 3万+粉丝 1906原创
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

秋说

感谢打赏

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

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

打赏作者

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

抵扣说明:

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

余额充值