在看这文章之前建议先看看先前架构原理介绍文章:

RocketMQ服务器启动

linux环境

下载编译源码 # 下载$

> wget wget http://mirror.bit.edu.cn/apache/rocketmq/4.6.0/rocketmq-all-4.6.0-source- >

# 解压$

>unzip rocketmq-all-4.7.0-source-release.zip

> cd rocketmq-all-4.7.0/

# 编译$

> mvn -Prelease-all -DskipTests clean install -U

> cd distribution/target/rocketmq-4.7.0/rocketmq-4.7.0

启动 Name Server # 启动 Name Server 服务

> nohup sh bin/mqnamesrv &

# 启动完成后,查看日志$

> tail -f ~/logs/rocketmqlogs/namesrv.log

The Name Server boot success...

启动 Broker

在 conf 目录下,RocketMQ 提供了多种 Broker 的配置文件:

broker.conf :单主,异步刷盘。

2m/ :双主,异步刷盘。

2m-2s-async/ :两主两从,异步复制,异步刷盘。

2m-2s-sync/ :两主两从,同步复制,异步刷盘。

dledger/ :Dledger 集群,至少三节点 # 启动 Broker服务

> nohup sh bin/mqbroker -n localhost:9876 &

# 启动完成后,查看日志$

> tail -f ~/logs/rocketmqlogs/broker.log

The broker[%s, 172.30.30.233:10911] boot success...

其中,参数:

通过 -c 参数,配置读取的主 Broker 配置

通过 -n 参数,设置 RocketMQ Namesrv 地址

关闭服务器 > sh bin/mqshutdown broker

The mqbroker(36695) is running...

Send shutdown request to mqbroker(36695) OK

> sh bin/mqshutdown namesrv

The mqnamesrv(36664) is running...

Send shutdown request to mqnamesrv(36664

windows环境

首先去官网下载编译之后的版本,然后解压到本地目录

官网链接:http://rocketmq.apache.org/dowloading/releases/

下载目标:Binary: [rocketmq-all-4.7.0-bin-release.zip

配置ROCKETMQ_HOME到系统环境变量中,启动脚本将读取ROCKETMQ_HOME变量

分别进入bin目录下 启动如下脚本(需要设置内存参数,防止内存过大,启动失败,具体看小节):

3.1 启动namesrv

运行命令: mqnamesrv.cmd

log : The Name Server boot success. serializeType=JSON

3.2 启动brokerserver

运行命令: mqbroker.cmd -n localhost:9876

log : The broker[IQSZ-L01898, 10.111.45.111:10911] boot success. serializeType=JSON and name server is localhost:9876

关闭服务器

mqshutdown.cmd broker

log:killing name server

mqshutdown.cmd namesrv

log:killing broker

RocketMQ发送消息和消费消息

RocketMQ发送消息和消费消息,先启动消费者,然后再启动生产者

添加依赖

org.apache.rocketmq

rocketmq-client

4.3.0

发送消息

发送消息--同步

public class SyncProducer {

public static void main(String[] args) throws Exception {

//Instantiate with a producer group name.

DefaultMQProducer producer = new

DefaultMQProducer("test-group");

// Specify name server addresses.

producer.setNamesrvAddr("localhost:9876");

//Launch the instance.

producer.start();

for (int i = 0; i < 100; i++) {

//Create a message instance, specifying topic, tag and message body.

Message msg = new Message("TopicTest" /* Topic */,

"TagA" /* Tag */,

("Hello RocketMQ " +

i).getBytes(RemotingHelper.DEFAULT_CHARSET) /* Message body */

);

//Call send message to deliver message to one of brokers.

SendResult sendResult = producer.send(msg);

System.out.printf("%s%n", sendResult);

}

//Shut down once the producer instance is not longer in use.

producer.shutdown();

}

}

发送消息--异步

public class AsyncProducer {

public static void main(String[] args) throws Exception {

//Instantiate with a producer group name.

DefaultMQProducer producer = new DefaultMQProducer("test—group");

// Specify name server addresses.

producer.setNamesrvAddr("localhost:9876");

//Launch the instance.

producer.start();

producer.setRetryTimesWhenSendAsyncFailed(0);

for (int i = 0; i < 100; i++) {

final int index = i;

//Create a message instance, specifying topic, tag and message body.

Message msg = new Message("TopicTest",

"TagA",

"OrderID188",

"Hello world".getBytes(RemotingHelper.DEFAULT_CHARSET));

producer.send(msg, new SendCallback() {

@Override

public void onSuccess(SendResult sendResult) {

System.out.printf("%-10d OK %s %n", index,

sendResult.getMsgId());

}

@Override

public void onException(Throwable e) {

System.out.printf("%-10d Exception %s %n", index, e);

e.printStackTrace();

}

});

}

//Shut down once the producer instance is not longer in use.

producer.shutdown();

}

发送消息--单向

public class OnewayProducer {

public static void main(String[] args) throws Exception{

//Instantiate with a producer group name.

DefaultMQProducer producer = new DefaultMQProducer("please_rename_unique_group_name");

// Specify name server addresses.

producer.setNamesrvAddr("localhost:9876");

//Launch the instance.

producer.start();

for (int i = 0; i < 100; i++) {

//Create a message instance, specifying topic, tag and message body.

Message msg = new Message("TopicTest" /* Topic */,

"TagA" /* Tag */,

("Hello RocketMQ " +

i).getBytes(RemotingHelper.DEFAULT_CHARSET) /* Message body */

);

//Call send message to deliver message to one of brokers.

producer.sendOneway(msg);

}

//Shut down once the producer instance is not longer in use.

producer.shutdown();

}

}

消费消息

public class Consumer {

public static void main(String[] args) throws InterruptedException, MQClientException {

// Instantiate with specified consumer group name.

DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("test-group");

// Specify name server addresses.

consumer.setNamesrvAddr("localhost:9876");

// Subscribe one more more topics to consume.

consumer.subscribe("TopicTest", "*");

// Register callback to execute on arrival of messages fetched from brokers.

consumer.registerMessageListener(new MessageListenerConcurrently() {

@Override

public ConsumeConcurrentlyStatus consumeMessage(List msgs,

ConsumeConcurrentlyContext context) {

System.out.printf("%s Receive New Messages: %s %n", Thread.currentThread().getName(), msgs);

return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;

}

});

//Launch the consumer instance.

consumer.start();

System.out.printf("Consumer Started.%n");

}

常出现的错误

安装中出现的错误

防止内存设置过大

修改runbroker.cmd配置文件

set "JAVA_OPT=%JAVA_OPT% -server -Xms500m -Xmx500m -Xmn500m"

set "JAVA_OPT=%JAVA_OPT% -XX:MaxDirectMemorySize=1g"

修改runserver.cmd配置文件

set "JAVA_OPT=%JAVA_OPT% -server -Xms500m -Xmx500m -Xmn500m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

启动NAMESERVER报错

unrecognized vm option 'MetasoaceSize=128m'

解决方法:更换jdk版本为1.8即可

启动BROKER报错

错误: 找不到或无法加载主类 xxxxxx’

解决方法:打开runbroker.cmd(windows),然后将‘%CLASSPATH%’加上英文双引

使用过程中出现的错误

No route info of this topic

Broker禁止自动创建Topic,且用户没有通过手工方式创建Topic

查看是否允许自动创建topic

命令:mqbroker.cmd -n localhost:9876 -p

mq开启自动创建topic参数

命令:mqbroker.cmd -n localhost:9876 autoCreateTopicEnable=true

Broker 没有正确连接到 Name Server

查看broker.log日志

位置: /安装目录/conf/logback_broker.xml中日志位置

日志信息:broker.log

日志信息:namesrv.log

Producer 没有正确连接到 Name Server

linux环境:查询防火墙是否通

错误分析方法

日志分析法:

查看broker日志

关注broker是否有注册到nameserver

register broker to name server localhost:9876 OK

关注生产者是否连接到broker

new producer connected, group: test_group channel: ClientChannelInfo ...

查看已经创建的topic是否包含自己想要的topic

2020-04-21 15:58:22 INFO main - load exist local topic, TopicConfig [topicName=test_group, readQueueNums=1, writeQueueNums=1, perm=RW-, topicFilterType=SINGLE_TAG, topicSysFlag=0, order=false] ...

查看消费者是否连接到broker

new consumer connected, group: test_group CONSUME_PASSIVELY CLUSTERING channel: ClientChannelInfo ...

查看nameserver日志

关注broker是否注册到nameserver

new broker registered, localhost:10911

查看topic消息

2020-04-21 17:03:32 INFO RemotingExecutorThread_1 - new topic registered, test_topic QueueData [brokerName=broker-a, readQueueNums=8, writeQueueNums=8, perm=6, topicSynFlag=0]

...

各位看官还可以吗?喜欢的话,动动手指点个

消息队列服务器安装失败,开发环境下的RocketMQ完整安装步骤、错误分析以及示例...相关推荐

  1. VUE开发环境下mock模拟数据与后端接口对接示例

    在以往的前端开发中,前端严重依赖后端,必须等待后端接口开发出来才能继续开发.使用mock,可以使得前后端开发异步进行,互不影响.Mock.js 是一个模拟数据生成器,使用它可以拦截ajax请求,直接模 ...

  2. PIC单片机开发环境搭建_MPLAB X IDE安装步骤

    熟悉开发环境是学习单片机的第一步,现在介绍下PIC得开发环境,PIC的开发环境有老的 MPLAB IDE, 和最新的MPLAB X IDE. MPLAB X IDE 比老的MPLAB IDE, 编写代 ...

  3. 《springcloud超级入门》Spring Cloud开发环境的准备和Lombok安装步骤《四》

    开发环境的准备主要涉及三个方面:JDK.Maven.Spring Tools 4 for Eclipse. 1. JDK JDK 的版本用 1.8 即可,环境变量大家自行去配置.配置好环境变量,在命令 ...

  4. Android Studio开发环境下让App自动签名

    Android Studio开发环境下让App自动签名 前言: 分享这个的原因有两个: 第一,在开发的过程中我们会发现关于微信的分享支付或者是支付宝的支付等一些功能的时候必须是要签名包,否则会失败,每 ...

  5. 微信小程序中开发环境下的POST请求

    写在前面 不得不说,开发环境下,微信小程序要是在发起网络请求的话,遇到的坑也是有的.尽管,微信提供了十分便捷的API 供开发者调用.今天在小程序中写了一个表单,需要提交到服务器上,于是发起了一个 PO ...

  6. spark最新源码下载并导入到开发环境下助推高质量代码(Scala IDEA for Eclipse和IntelliJ IDEA皆适用)(以spark2.2.0源码包为例)(图文详解)...

    不多说,直接上干货! 前言   其实啊,无论你是初学者还是具备了有一定spark编程经验,都需要对spark源码足够重视起来. 本人,肺腑之己见,想要成为大数据的大牛和顶尖专家,多结合源码和操练编程. ...

  7. Myeclipse开发环境下文件中出现的提示错误与解决方法:The import javax.servlet cannot be resolved?

    Myeclipse开发环境下文件中出现的提示错误与解决方法:The import javax.servlet cannot be resolved? 参考文章: (1)Myeclipse开发环境下文件 ...

  8. 解决thinkphp在开发环境下文件模块找不到的问题

    win10系统下,phpstudy开发环境下小问题描述: 找不到public公共模块. Not Found The requested URL /public/admin/login.html was ...

  9. 阿里云服务器安装docker开发环境

    前段时间在阿里云上买了个服务器,打算部署一下开发环境,想了一下就使用最近一年念念不忘的docker来部署吧!他的好处就去看看官方文档吧,这边在部署使用之后会总结到该导航文章中,这篇导航文章会随时更新, ...

最新文章

  1. 让Everest 0.6支持Intel 82852/82855 GM/GME显卡图形登录
  2. 贾跃亭融资计划书曝光:看他如何靠两份PPT融资150亿
  3. xen虚拟化实战系列(一)之xen虚拟化环境安装
  4. linux 冒号命令,linux 的空命令:(冒号)
  5. 查找xml文件中某接点的值
  6. java用for循环修改密码_Java for循环的几种用法分析
  7. Qt-IP地址查询工具(使用HTTP GET方法)
  8. crontab定时任务不生效问题解决
  9. SAP BW顾问如何保持市场竞争力?
  10. 2018_09_21_刚才发现csdn漏掉了我的上一篇日记
  11. -f shell 模糊匹配_shell模糊匹配与正则详解
  12. Windows通用文件关联错误恢复
  13. 【C语言】常见面笔试题(10道)
  14. mac python3.8上怎么安装pygame 第三方库_Python3.8安装Pygame教程步骤详解
  15. 2017java考证_Sun认证Java程序员考试试题
  16. Total Phase Data Center介绍
  17. 并行计算机未来发展前景
  18. QQ聊天记录多角度分析Python实现
  19. 【调剂】2020年中科院上海光机所接收报考硕士研究生调剂生的通知
  20. 车路协同云/边缘云服务平台概要【原创】

热门文章

  1. 英文关键词计算tf-idf 余弦相似度_TFIDF原理与实践
  2. android如何实现支付宝,(Android集成支付宝支付)react-native实现支付宝支付
  3. 使用浏览器console批量更改图片的宽度
  4. error D8021 :无效的数值参数“/Wno-cpp” cython_bbox
  5. 目标检测旋转增强源码
  6. pip 查看安装路径
  7. googleapiclient.discovery
  8. everything 搜索盘符
  9. 删除 win10 资源 默认 音乐 视频 文件夹
  10. ffmpeg avformat_open_input always returns “Protocol not found”