推荐设备MORE

肇庆企业官网建设—微信小程

肇庆企业官网建设—微信小程

行业知识

有史以来最方便快捷构建RocketMQ网络服务器的方式

日期:2021-02-28
我要分享

近期学习培训应用 rocketmq,必须构建 rocketmq 服务端,文中关键纪录 rocketmq 构建全过程及其这一全过程踩到的一些坑。对于有多简易呢,在该机现有Docker自然环境的状况下只必须三步就可以。

从github上边拉取新项目

改动broker.conf中的brokerIP1 主要参数,改动为该机IP


最先大家是应用Docker开展构建自然环境的,因此大家需先在自身设备上的安裝Docker,实际的安裝全过程及其针对Docker的详细介绍官方网文本文档里边说的很清晰了get-started/。

大家要构建RocketMQ网络服务器,那麼大家就需要了解大约构建RocketMQ网络服务器必须布署什么物品。针对RocketMQ有一个构架图,以下所显示。而图上所显示的Producer(生产制造者)和Consumer(消費者)不用大家构建,由于那就是做为一个网络服务器开展起动的。nameserver便是一个申请注册管理中心一样部件,大家能够将其简易了解成springcloud中的Eureka,那麼nameserver是必须大家构建的。broker便是真实解决信息的地区,也是必须大家构建的。

RocketMQ架构图

一切正常状况大家构建上边所提及的2个部件实际上就可以早已可以考虑大家的推送接受信息的要求了。可是一般状况下大家还必须构建一个Web可视性化的服务平台用于查询MQ的服务情况、信息的消費状况、主题风格的序列配备这些。这儿应用rocketmq-console。一样也是根据Docker来开展安裝。

上边大家提及了必须安裝三个部件,那麼这三个部件也是必须可以相互之间通讯联接的,pose开展配备布署。

version: '3.5'services: rmqnamesrv: image: foxiswho/rocketmq:server container_name: rmqnamesrv ports:
 - 9876:9876
 volumes:
 - ./logs:/opt/logs
 - ./store:/opt/works: rmq: aliases:
 - rmqnamesrv rmqbroker: image: foxiswho/rocketmq:broker container_name: rmqbroker ports:
 - 10909:10909
 - 10911:10911
 volumes:
 - ./logs:/opt/logs
 - ./store:/opt/store
 - ./conf/broker.conf:/etc/rocketmq/broker.conf environment: NAMESRV_ADDR: "rmqnamesrv:9876"
 JAVA_OPTS: " -Duser.home=/opt"
 JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"
&mand: mqbroker -c /etc/rocketmq/broker.conf depends_on:
 - works: rmq: aliases:
 - rmqbroker rmqconsole: image: styletang/rocketmq-console-ng container_name: rmqconsole ports:
 - 8080:8080
 environment: JAVA_OPTS: "-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"
 depends_on:
 - works: rmq: aliases:
 -&works: rmq: name: rmq driver: bridge

随后在撰写broker.conf配备文档里边的內容

# Licensed to the Apache Software Foundation (ASF) under one or more# contributor license agreements. See the NOTICE file distributed with# this work for rmation regarding copyright ownership.# The ASF licenses this file to You under the Apache License, Version 2.0# (the "License"); you may not use this file except pliance with# the License. You may obtain a copy of the License at## licenses/LICENSE-2.0## Unless required by applicable law or agreed to in writing, software# distributed under the License is distributed on an "AS IS" BASIS,# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.# See the License for the specific language governing permissions and# limitations under the License.# 隶属群集姓名brokerClusterName=DefaultCluster# broker 姓名,留意这里不一样的配备文档填好的不一样,假如在 broker-a.properties 应用: broker-a,# 在 broker-b.properties 应用: broker-bbrokerName=broker-a# 0 表明 Master,  0 表明 SlavebrokerId=0# nameServer详细地址,分号切分# namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876# 起动IP,假如 docker .alibaba.rocketmq.remoting.exception.RemotingConnectException: connect to  192.168.0.120:10909  failed# 处理方法1 再加一句 producer.setVipChannelEnabled(false);,处理方法2 brokerIP1 设定寄主机IP,不必应用docker 內部IPbrokerIP1=192.168.1.16# 在推送信息时,全自动建立网络服务器不会有的topic,默认设置建立的序列数defaultTopicQueueNums=4# 是不是容许 Broker 全自动建立 Topic,提议线下推广打开,网上关掉 !!!这儿细心看是 false,false,falseautoCreateTopicEnable=true# 是不是容许 Broker 全自动建立定阅组,提议线下推广打开,网上关掉autoCreateSubscriptionGroup=true# Broker 对外开放服务的监视端口号listenPort=10911# 删掉文档時间点,默认设置零晨4点deleteWhen=04# 文档保存時间,默认设置两天fileReservedTime=120#&mitLog 每一个文档的尺寸默认设置2GBmapedFileSizeCommitLog=# ConsumeQueue 每一个文档默认设置存 30W 条,依据业务流程状况调节mapedFileSizeConsumeQueue=300000# destroyMapedFileIntervalForcibly=120000# redeleteHangedFileInterval=120000# 检验物理学文档硬盘室内空间diskMaxUsedSpaceRatio=88# 储存相对路径# storePathRootDir=/home/ztztdata/rocketmq-all-4.1.0-incubating/store#&mitLog 储存相对路径# storePathCommitLog=/home/ztztdata/rocketmq-all-4.1.0-mitlog# 消費序列储存# storePathConsumeQueue=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/consumequeue# 信息数据库索引储存相对路径# storePathIndex=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/index# checkpoint 文档储存相对路径# storeCheckpoint=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/checkpoint# abort 文档储存相对路径# abortFile=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/abort# 限定的信息尺寸maxMessageSize=65536# flushCommitLogLeastPages=4# flushConsumeQueueLeastPages=2# flushCommitLogThoroughInterval=10000# flushConsumeQueueThoroughInterval=60000# Broker 的人物角色# - ASYNC_MASTER 多线程拷贝Master# - SYNC_MASTER 同歩双写Master# - SLAVEbrokerRole=ASYNC_MASTER# 刷盘方法# - ASYNC_FLUSH 多线程刷盘# - SYNC_FLUSH 同歩刷盘flushDiskType=ASYNC_FLUSH# 发信息进程池总数# sendMessageThreadPoolNums=128# 拉信息进程池总数# pullMessageThreadPoolNums=128

配备文档中的內容大家只必须修改一点就可以,即brokerIP1 这一特性,大家将其变更为大家该机的ip,能够运用ipconfig开展查询。

应用Springboot迅速入门

这儿可能应用 springboot 迅速入门应用 mq,可能应用rocketmq-spring-boot-starter控制模块。郑州市不孕不育医院门诊哪个好:

pom 配备以下

 !--在pom.xml中加上依靠-- dependency 
  .apache.rocketmq /groupid 
  artifactid rocketmq-spring-boot-starter /artifactid 
  version 2.0.3 /version /dependency 

gradle配备以下

implementation 'org.apache.rocketmq:rocketmq-spring-boot-starter:2.0.3'

消費服务推送方配备以下:

## application.propertiesrocketmq.name-server=ip:9876rocketmq.producer.group=my-group

消費服务推送方程序以下:

@SpringBootApplicationpublic class ProducerApplication implements CommandLineRunner { @Resource
 private RocketMQTemplate rocketMQTemplate; public static void main(String[] args){
 SpringApplication.run(ProducerApplication.class, args);
 } public void run(String... args) throws Exception {
 rocketMQTemplate.convertAndSend("test-topic-1", "Hello, World!");
 rocketMQTemplate.send("test-topic-1", MessageBuilder.withPayload("Hello, World! I'm from spring message").build());
 }
}

这儿图方便得话能够将消費者和生产制造者写到同一个新项目中。

信息消費方配备以下:

## application.propertiesrocketmq.name-server=ip:9876

信息消費方运作程序以下:

@SpringBootApplicationpublic class ConsumerApplication{ public static void main(String[] args){
 SpringApplication.run(ConsumerApplication.class, args);
 } @Slf4j @Service
 @RocketMQMessageListener(topic = "test-topic-1", consumerGroup = "my-consumer_test-topic-1") public static class MyConsumer1 implements RocketMQListener string  { public void onMessage(String message) {
&("received message: {}", message);
 }
 }
}

到如今才行大家便可以在该机上开心的实验各种各样有关RocketMQ的有关物品了。

郑州市的不孕不育医院门诊哪个好:yiyuanfengcai/tsyl_zztjyy/3031/

大伙儿能够立即从上边拉取新项目,起动RocketMQ只必须两步。

改动broker.conf中的brokerIP1 主要参数,改动为该机IP

假如大伙儿不愿自身构建Springboot新项目得话,能够从modouxiansheng/Doraemon上边立即拉取出来就可以了了。 /string