网站免费推广100种方法,wordpress图片云储存,网站建设和管理情况,深圳市建设网站您好#xff0c;我是码农飞哥#xff08;wei158556#xff09;#xff0c;感谢您阅读本文#xff0c;欢迎一键三连哦。 #x1f4aa;#x1f3fb; 1. Python基础专栏#xff0c;基础知识一网打尽#xff0c;9.9元买不了吃亏#xff0c;买不了上当。 Python从入门到精… 您好我是码农飞哥wei158556感谢您阅读本文欢迎一键三连哦。 1. Python基础专栏基础知识一网打尽9.9元买不了吃亏买不了上当。 Python从入门到精通 2. 毕业设计专栏毕业季咱们不慌忙几百款毕业设计等你选。 ❤️ 3. Python爬虫专栏系统性的学习爬虫的知识点。9.9元买不了吃亏买不了上当 。python爬虫入门进阶 ❤️ 4. Ceph实战从原理到实战应有尽有。 Ceph实战 ❤️ 5. Java高并发编程入门打卡学习Java高并发。 Java高并发编程入门 文章目录 1. 前言2. 拉取镜像3. 下载可视化工具镜像4. broker配置5.启动文件 rocketmq.yml 配置6. 测试消息的发送和接收首先在pom.xml文件中添加RocketMQ的依赖在application.properties文件中配置RocketMQ的相关信息创建一个生产者类创建一个消费者类在主类中调用生产者发送消息 1. 前言
前文对RocketMQ的基本概念做了一些介绍本文将小试牛刀一下。本文主要讲述如何通过docker来部署单机版的RocketMQ。部署RocketMQ的最核心是部署nameserver以及部署broker。然后我们还需要安装可视化界面在RocketMQ的官网上提供的是基础的安装方式。
2. 拉取镜像
git clone https://github.com/apache/rocketmq-docker.git如果访问不了github的话则需要科学上网。该命令会拉取最新的rocketmq镜像。 下载好之后可以通过访问 https://archive.apache.org/dist/rocketmq/ 命令来查看rocketmq镜像的版本。
下载好之后 执行cd rocketmq-docker 命令跳转到 ./rockeetmq-docker 命令。 然后跳转到 image-build 目录然后执行 build-image.sh 命令构建镜像。
cd image-build
sh build-image.sh 5.1.3 alpinedocker images3. 下载可视化工具镜像
docker pull apacherocketmq/rocketmq-dashboard:latest4. broker配置
这里自定义一个路径用于存放broker的配置然后在此路径下创建一个broker.conf的文件。
mkdir -p /Users/manongfeige/config/rocketmq
cd /Users/manongfeige/config/rocketmq/
touch broker.conf
vim broker.confbroker.conf文件的配置信息如下
# 所属集群名称如果节点较多可以配置多个
brokerClusterName DefaultCluster
#broker名称master和slave使用相同的名称表明他们的主从关系
brokerName broker-a
#0表示Master大于0表示不同的slave
brokerId 0
#表示几点做消息删除动作默认是凌晨4点
deleteWhen 04
#在磁盘上保留消息的时长单位是小时
fileReservedTime 48
#有三个值SYNC_MASTERASYNC_MASTERSLAVE同步和异步表示Master和Slave之间同步数据的机制
brokerRole ASYNC_MASTER
#刷盘策略取值为ASYNC_FLUSHSYNC_FLUSH表示同步刷盘和异步刷盘SYNC_FLUSH消息写入磁盘后才返回成功
状态ASYNC_FLUSH不需要
flushDiskType ASYNC_FLUSH
# 设置broker节点所在服务器的ip地址、物理ip不能用127.0.0.1、localhost、docker内网ip
brokerIP1 192.168.41.121这里需要注意的是设置broker节点所在的服务器ip地址必须是真实的物理ip不能用127.0.0.1、localhost、docker内网ip。
在mac电脑中通过 ifconfig 命令来查看。 配置好broker.conf接着配置启动 RocketMQ的yml文件。这里创建一个 rocketmq.yml 文件跟broker.conf文件放在同一个目录下。
5.启动文件 rocketmq.yml 配置
version: 3
services:namesrv:image: apache/rocketmq:5.1.3-alpinecontainer_name: rmqnamesrvports: - 9876:9876command: sh mqnamesrvbroker:image: apache/rocketmq:5.1.3-alpinecontainer_name: rmqbrokerports:- 10909:10909- 10911:10911- 10912:10912volumes:- /Users/manongfeige/config/rocketmq/broker.conf:/home/rocketmq/rocketmq-5.1.3/conf/broker.confcommand: sh mqbroker -n namesrv:9876 -c /home/rocketmq/rocketmq-5.1.3/conf/broker.confdepends_on:- namesrvmqconsole:image: apacherocketmq/rocketmq-dashboardcontainer_name: rmqdashboardports: - 8181:8080environment:JAVA_OPTS: -Drocketmq.config.namesrvAddrnamesrv:9876 -Drocketmq.config.isVIPChannelfalsedepends_on:- namesrv此配置文件主要分为三部分 第一部分是nameserver的配置。nameserver默认的端口是 9876。镜像的话这里指定为apache/rocketmq:5.1.3-alpine。如果版本不同需要做对应的修改。如果不知道你的镜像是啥可以在docker中查看。 配置broker broker 需要注意的是将前面配置的 broker.conf 文件映射到容器中的 /home/rocketmq/rocketmq-5.1.3/conf/broker.conf 中去。 配置myconsole 主要是设置使用的镜像容器的名称以及使用的端口号。console 依赖的是Java环境以及nameserver。
配置好之后接着执行如下命令
docker-compose -f rocketmq.yml up -d启动正常的命令应该是这样的然后。我们访问一下 http://localhost:8181/#/producer 控制台。 6. 测试消息的发送和接收 首先在pom.xml文件中添加RocketMQ的依赖 dependencygroupIdorg.apache.rocketmq/groupIdartifactIdrocketmq-spring-boot-starter/artifactIdversion2.2.3/version/dependency在application.properties文件中配置RocketMQ的相关信息 rocketmq.name-server192.168.31.191:9876
rocketmq.producer.groupmyProducerGroup创建一个生产者类 Component
public class Producer {Autowiredprivate RocketMQTemplate rocketMQTemplate;public void sendMessage(String topic, String message) {rocketMQTemplate.convertAndSend(topic, message);}
}创建一个消费者类 Service
RocketMQMessageListener(topic test_topic, consumerGroup test_consumer_group)
public class Consumer implements RocketMQListenerString {Overridepublic void onMessage(String s) {System.out.println(Received message: s);}
}在主类中调用生产者发送消息 SpringBootApplication
public class RocketmqDemoApplication {public static void main(String[] args) {ConfigurableApplicationContext run SpringApplication.run(RocketmqDemoApplication.class, args);Producer producer run.getBean(Producer.class);producer.sendMessage(test_topic, 你好呀,码农飞哥);}
}