一、Windows环境搭建RocketMQ

1. 下载RocketMQ Binary压缩包,并解压缩,我的安装目录为E:\programs\rocketmq\rocketmq-all-4.5.1

2. 配置环境变量:ROCKETMQ_HOME,其值为RocektMQ的安装目录

3. 启动NameServer

在命令行中进入RocketMQ安装目录下的bin目录,执行start mqnamesrv.cmd,执行完成后会弹出一个新窗口,不要关闭该窗口

4. 启动Broker

在命令行中进入RocketMQ安装目录下的bin目录,执行start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true,执行完成后会弹出一个新窗口,不要关闭该窗口

首次执行中遇到了如下问题:错误: 找不到或无法加载主类 Files\Java\jdk1.8.0_144\lib\dt.jar;C:\Program

看错误提示应该是CLASSPATH变量中有空格,导致读取失败

可以通过修改bin目录下的runbroker.cmd文件,找到其中的倒数第二行: set "JAVA_OPT=%JAVA_OPT% -cp %CLASSPATH%",在%CLASSPATH%两边加双引号,引起来,这样就可以识别CLASSPATH变量中的空格。再次执行start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true,成功。

二、ubuntu环境搭建RocketMQ
1. 下载RocketMQ的源码,并解压缩

unzip rocketmq-all-4.5.-source-release.zip

2. 在解压缩的目录中,使用maven构建项目,构建完成后,进入rocketmq目录

cd rocketmq-all-4.4./
mvn -Prelease-all -DskipTests clean install -U
cd distribution/target/apache-rocketmq

3. 视情况修改runbroker.sh和runserver.sh文件中JVM参数,默认参数设置的内存比较大,个人电脑运行不起来,需要调小

runbroker.sh中

原配置:JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"

修改为:JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx256m -Xmn256m"

runserver.sh中

原配置:JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

修改为:JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx256m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

4. 启动nameserver:

在构建完成的rocketmq目录下,执行如下语句,启动nameserver

nohup sh bin/mqnamesrv &

查看日志

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

5. 启动broker

启动broker语句和查看日志语句

nohup sh bin/mqbroker -n localhost: &
tail -f ~/logs/rocketmqlogs/broker.log

6. 关闭broker和server语句

sh bin/mqshutdown broker

sh bin/mqshutdown namesrv

三、示例

生产者

import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;
import org.apache.rocketmq.remoting.common.RemotingHelper; public class Producer {
public static void main(String[] args) throws Exception {
//创建一个消息生产者,并设置一个消息生产者组
DefaultMQProducer producer = new DefaultMQProducer("zs_producer_group");
//指定NameServer地址
producer.setNamesrvAddr("localhost:9876");
//初始化Producer,在整个应用生命周期中只需要初始化一次
producer.start();
for(int i = 0;i<100;i++) {
//创建一个消息对象,指定其主题、标签和消息内容
Message msg = new Message(
"topic_example_java" /*消息主题名*/,
"TagA" /*消息标签*/,
("Hello Java demo RocketMQ" + i).getBytes(RemotingHelper.DEFAULT_CHARSET) /*消息内容*/
);
//发送消息并返回结果
SendResult sendResult = producer.send(msg); System.out.printf("%s%n", sendResult);
}
//一旦生产者实例不再被使用,则将其关闭,包括清理资源、关闭网络连接等
producer.shutdown();
}
}

消费者

import java.util.Date;
import java.util.List;
import java.io.UnsupportedEncodingException; import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
import org.apache.rocketmq.common.consumer.ConsumeFromWhere;
import org.apache.rocketmq.common.message.MessageExt; public class Consumer {
public static void main(String[] args) throws Exception {
//创建一个消息消费者,并设置一个消息消费者组
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("zs_consumer_group");
//指定NameServer地址
consumer.setNamesrvAddr("localhost:9876");
//设置Consumer第一次启动时是从队列头部还是队列尾部开始消费的
consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);
//订阅指定Topic下的所有消息
consumer.subscribe("topic_example_java","*");
//注册消息监听器
consumer.registerMessageListener((List<MessageExt> list, ConsumeConcurrentlyContext context) ->{
//默认list里只有一条消息,可以通过设置参数来批量接收消息
if(list!= null) {
for(MessageExt ext: list) {
try {
System.out.println(new Date()+ new String(ext.getBody(),"UTF-8"));
}catch(UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
});
//消息者对象在使用之前必须要调用start方法初始化
consumer.start();
System.out.println("消息消费者已启动");
}
}

运行结果:

消费者

生产者

RocketMQ4.5.1环境搭建及示例的更多相关文章

  1. S2X环境搭建与示例运行

    S2X环境搭建与示例运行 http://dbis.informatik.uni-freiburg.de/forschung/projekte/DiPoS/S2X.html 环境 Maven proje ...

  2. vue前端+java后端 vue + vuex + koa2开发环境搭建及示例开发

    vue + vuex + koa2开发环境搭建及示例开发 https://segmentfault.com/a/1190000012918518 vue前端+java后端 https://blog.c ...

  3. robot framework环境搭建和简单示例

    环境搭建 因为我的本机已经安装了python.selenium.pip等,所以还需安装以下程序 1.安装wxPythonhttp://downloads.sourceforge.net/wxpytho ...

  4. pyqt开发教程-搭建环境和开发示例

    搭建环境和开发示例 * 安装 安装包 要对应python的版本 32位安装包(我PC上) http://jaist.dl.sourceforge.net/project/pyqt/PyQt4/PyQt ...

  5. jenkins 环境搭建与入门示例

    环境说明: 1.win7 2.tomcat 9.0.0.M17 3.jenkins 2.32.2.war jenkins 环境搭建 1.下载jenkins部署包 https://jenkins.io/ ...

  6. 2017.2.20 activiti实战--第二章--搭建Activiti开发环境及简单示例(二)简单示例

    学习资料:<Activiti实战> 第一章 搭建Activiti开发环境及简单示例 2.5 简单流程图及其执行过程 (1)leave.bpmn 后缀名必须是bpmn.安装了activiti ...

  7. Activiti Workflow HelloWorld 示例与测试环境搭建

    作者:Rock 出处:http://www.ecmkit.com/zh-hans/2012/03/21/activiti-workflow-hell Activiti Workflow HelloWo ...

  8. 本人亲测-SSM环境搭建(使用eclipse作为示例,过程挺全的,可作为参考)

    本人亲测-SSM环境搭建(使用eclipse作为示例,过程挺全的,可作为参考) 本人亲测-SSM环境搭建(使用eclipse作为示例,过程挺全的,可作为参考) 本人亲测-SSM环境搭建(使用eclip ...

  9. C++调用Lua编程环境搭建及测试代码示例

    C++调用Lua编程环境搭建及测试代码示例 摘要:测试环境是VS2005+LuaForWindows_v5.1.4-45.exe+WIN7 1.安装lua开发环境LuaForWindows_v5.1. ...

随机推荐

  1. How to do SSH Tunneling (Port Forwarding)

    How to do SSH Tunneling (Port Forwarding) In this post we will see how ssh works?, what is SSH tunne ...

  2. zookerper安装使用教程

    转载自 http://blog.java1234.com/blog/articles/379.html 再安装zookeeper之前,我们看下zookeeper简介 https://baike.bai ...

  3. iOS - 崩溃异常处理(1)

    https://www.jianshu.com/p/4d32664dcfdb 一.关于崩溃 闪退估计是我们最不想看到的,对于用户而言,马上就能产生一种不悦,对于投资方而言,也会产生对技术实力的不信任感 ...

  4. 【开发工具】- Windows下多个jdk版本切换

    一.直接安装jdk,如图我安装了JDK6.JDK7和JDK8三个版本: 二.在安装JDK8后需要在 C:\Windows\System32 该目录下删除 java.exe 和 javaw.exe两个文 ...

  5. js 动态创建 全局变量(转载)

    转载来源 https://blog.csdn.net/stevenzhong900610/article/details/40857087 https://www.jb51.net/article/8 ...

  6. JSP内置对象(下)

    session的生命周期 创建 活动 销毁 application对象 Page对象

  7. go调度: 第一部分-OS调度(操作系统调度)

    开场白 这个是三篇博客中的第一篇, 用来提供go调度背后的机制和语法. 这篇博客主要关注操作系统调度. 三篇博客的顺序是: 1) go调度: 第一部分 - 操作系统调度 2) go调度: 第二部分 - ...

  8. 个人第5次作业-Alpha2项目的测试

    这个作业属于哪个课程 系统分析与设计 这个作业要求在哪里 作业要求 团队名称 卓越Code 这个作业的目标 选取3个非自己所在团队进行项目测试,协助该团队进行项目改进 前言 魏家田 201731062 ...

  9. Kotlin高阶函数与函数式编程详解

    函数可变参数: 在上一次https://www.cnblogs.com/webor2006/p/11518425.html中学到了可变参考,关于可变参数有如下规则说明: “一个方法中,只允许一个参数为 ...

  10. c++查询特定字符串位置

    size_t find (const string& str, size_t pos = 0) const noexcept;(摘自c++官网:std::string::find) size_ ...