当前位置: 首页 > news >正文

RocketMQ安装和简单使用

说明:RocketMQ与RabbitMQ一样,是分布式架构中的一个组件,用来解决微服务之间的异步调用。同类的还有两个,各自的特点如下:

在这里插入图片描述

Rocket结构

服务启动时

在这里插入图片描述

发送消息时

在这里插入图片描述

其中各个部分的功能如下:

(1)生产者:

  • 发送消息到MQ中的某个Topic;

  • 多个相同的消息发送吴福气可以构成一个生产者集群;

  • 在消息生产者集群中可以实现事务补偿;

(2)消费者:

  • 监听MQ中的某个Topic中的消息;

  • 一个Topic可以被多个消费者监听;

  • 多个消息消费者如果监听了同一个Topic可以构成一个消费者集群;

(3)消息服务器:

  • 接收消息、提供消息、消息持久化、过滤消息;

(4)命名服务器:

  • 管理Broker服务器;

  • 生产者发送消息要连接到命名服务器;

  • 消费者接收消息要连接到命名服务器;

安装

第一步:下载

首先,去官网上下载安装包,我这里下载最新的5.1.3版本

在这里插入图片描述

第二步:解压

安装完成后,复制到云服务器上部署启动,解压

unzip 压缩包名

在这里插入图片描述

第三步:修改配置

解压完成后,进入到bin目录,修改这两个文件中的JAVA_OPT值,改小一点,避免启动失败;

(文件1)

vim runserver.sh

在这里插入图片描述

(文件2)

vim runbroker.sh

在这里插入图片描述

(文件3)

修改conf/broker.conf文件,添加这行配置brokerRole = ASYNC_MASTER,表示将该broker设置为异步主节点,我当前的版本默认已添加,可跳过;

vim ../conf/broker.conf

在这里插入图片描述

启动

进入bin目录,先启动命名服务,再启动broker服务

./mqnamesrv

尴尬,云服务器空间不够,还是换虚拟机吧

在这里插入图片描述

命名服务启动成功

在这里插入图片描述

此时另外开一个会话,进入到bin目录,启动broker服务,指定端口为9876;

./mqbroker -n localhost:9876

broker服务启动成功;

在这里插入图片描述

注:如果出现权限不够,可以输入下面的命令,将rocketmq文件夹权限设置为777

chmod -R 777 rocketmq文件夹目录

使用

简单创建两个模块,一个消费者,一个生产者,同属于一个父模块,父模块的依赖如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.hzy</groupId><artifactId>essay-rocketmq</artifactId><packaging>pom</packaging><version>1.0-SNAPSHOT</version><modules><module>consumer</module><module>producer</module></modules><properties><maven.compiler.source>11</maven.compiler.source><maven.compiler.target>11</maven.compiler.target><spring-boot.version>2.3.12.RELEASE</spring-boot.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!--rocket的依赖--><dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.0.4</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><mainClass>com.hzy.springbootrocketmq.SpringbootRocketmqApplication</mainClass><skip>true</skip></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build>
</project>

消费者(consumer)配置文件

server:port: 8081
# 配置RocketMQ命名服务器地址
rocketmq:name-server: 192.168.101.65:9876

生产者(producer)配置文件,需要设置一个producer.group

server:port: 8082
# 配置RocketMQ命名服务器地址
rocketmq:name-server: 192.168.101.65:9876producer:group: groupA

下面在生产者的测试类里面,发送消息,看消费者那边能不能接收到;

(生产者代码)

@SpringBootTest
public class RocketTest {@Autowiredprivate RocketMQTemplate rocketMQTemplate;@Testpublic void simpleTest(){rocketMQTemplate.syncSend("simple","hello rocketmq!");}
}

(消费者代码,创建一个监听器类,如下)

@Component
@RocketMQMessageListener(consumerGroup = "groupA", topic = "simple")
public class ConsumerListener implements RocketMQListener<String> {@Overridepublic void onMessage(String s) {System.out.println("s = " + s);}
}

启动消费者,再启动这个测试类,查看结果:

(发送完成)

在这里插入图片描述

(成功接收)

在这里插入图片描述

http://www.lryc.cn/news/107146.html

相关文章:

  • Codeforces Round 869 (Div. 2)
  • 【雕爷学编程】MicroPython动手做(28)——物联网之Yeelight 3
  • CTFSHOW php 特性
  • 2、认识O(nlogn)的排序
  • 什么是 HTTP 长轮询?
  • 操作系统用户态和核心态和CPU上下文切换
  • TSINGSEE青犀视频汇聚平台EasyCVR视频广场面包屑侧边栏支持拖拽操作
  • RocketMQ发送消息超时异常
  • WordPress做权重站:二级目录伪静态写法
  • 浅谈下API初步认知
  • LeetCode--剑指Offer75(2)
  • 基于vue-cli3的vue项目 通过postcss-pxtorem 实现px自动转换成rem并解决版本问题
  • 前端开发常用的方法封装(二)
  • 【Java】Springboot脚手架生成初始化项目代码
  • LLaMA系列 | LLaMA和LLaMA-2精简总结
  • 运动蓝牙耳机什么款式好、适合运动的蓝牙耳机推荐
  • 在敏捷项目中如何做好资源规划?
  • mybatis-plus 用法
  • 重测序数据分析流程丨操作步骤与代码与代码脚本
  • npm -v无法显示版本号
  • 【Vue】父子组件值及方法传递使用
  • 医药化工企业洁净厂房改造消防防爆安全的重要性
  • Web开发中防止SQL注入
  • 【LeetCode-中等】剑指 Offer 35. 复杂链表的复制(详解)
  • QT图形视图系统 - 使用一个项目来学习QT的图形视图框架 -第一篇
  • Cat.1如何成为物联网业务加速器?
  • Qt应用开发(基础篇)——布局管理 Layout Management
  • Python web实战之 Django 的 ORM 框架详解
  • pycharm制作柱状图
  • 静态资源导入探究