内容简介:Windows 版本下载地址:下载并解压 rocketmq 安装包。
RocketMQ 是一款分布式消息中间件,最初是由阿里巴巴消息中间件团队研发并大规模应用于生产系统,满足线上海量消息堆积的需求, 在 2016 年底捐赠给 Apache 开源基金会成为孵化项目,经过不到一年时间正式成为了 Apache 顶级项目。
早期阿里曾经基于 ActiveMQ 研发消息系统, 随着业务消息的规模增大,瓶颈逐渐显现,后来也考虑过Kafka,但因为在低延迟和高可靠性方面没有选择,最后才自主研发了 RocketMQ, 各方面的性能都比目前已有的消息队列要好,RocketMQ 和 Kafka 在概念和原理上都非常相似,所以也经常被拿来对比;RocketMQ 默认采用长轮询的拉模式, 单机支持千万级别的消息堆积,可以非常好的应用在海量消息系统中。
本文分为三部分,如下图所示:
1 安装 RocketMQ—Windows 版本
(1)下载 Windows 安装包
Windows 版本下载地址: http://rocketmq.apache.org/release_notes/
下载并解压 rocketmq 安装包。
(2)配置系统环境变量
配置系统变量 ROCKETMQ_HOME=“D:softrocketmq-all-4.5.1-bin-release”,如下图所示:
注意:每个人 rocketmq 存放目录不一样,我的在 D:soft 下,用户根据自己的环境配置相应的系统变量。
因为接下来启动 mqnamesrv.cmd 中使用到了环境变量 %ROCKETMQ_HOME%,所以这里需要配置此系统变量。
(3)启动 namesrv
进入 rocketmq 的 bin 目录,执行 start mqnamesrv.cmd
,执行成功如下图所示:
注意:启动之后,不能关闭此窗口。
(4)启动 broker
还是在 bin 目录下执行 start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true
,执行成功如下图所示:
同样不要关闭以上运行窗口。
完成以下步骤,说明你的 RocketMQ 已经按照成功了。
2 安装可视化插件
(1)下载插件
打开连接 https://github.com/apache/roc... 下载可视化插件 rocketmq-externals,如下图所示:
点击 Download ZIP 进行下载。
我为大家准备了国内百度云的下载链接,方便大家使用。
百度链接: https://pan.baidu.com/s/1sMO6...
提取码:fuzy
(2)配置插件
下载完成之后,进入 rocketmq-externalsrocketmq-consolesrcmainresourcesapplication.properties 进行配置,如下图所示:
其中主要的字段说明如下:
- server.port=8066:此可视化插件的运行端口。
- rocketmq.config.namesrvAddr=127.0.0.1:9876:rocketmq 的链接信息。
(3)编译插件
mvn clean package -Dmaven.test.skip=true
编译项目。
编译成功如下图所示:
编译阶段有可能出现以下两个问题,没有找到 mvn 命令,或编译超级慢的问题,以下提供解决方案。
问题一:mvn 非可以运行的命令
解决方案:这是因为没有安装 Maven 或者没有配置 Maven 的环境变量导致的,下载 Maven 安装包,增加环境变量 MAVEN_HOME=maven安装目录
,给 path 中添加 %MAVEN_HOME%\bin
,重新启动命令行工具(CMD)重新执行命令。
问题二:编译超慢的问题
解决方案:这是因为使用 Maven 数据源为国外源的问题导致的,只需要配置阿里的 Maven 源即可。
打开 Maven 目录下的 conf/setting.xml 给 mirrors 节点下添加如下内容:
<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>
(4)运行插件
编译成功之后,进入 target 文件夹,执行 java -jar rocketmq-console-ng-1.0.1.jar
启动程序。
启动成功之后,在浏览器输入地址 http://127.0.0.1 :8066 进行访问,效果如下图:
3 基础使用
(1)添加引用 jar 包
pom.xml 添加以下代码:
<!-- https://mvnrepository.com/artifact/com.alibaba.rocketmq/rocketmq-client --> <dependency> <groupId>com.alibaba.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> <version>3.6.2.Final</version> </dependency>
(2)添加生产者和消费者代码
public class RocketMQDemo { static final String MQ_NAMESRVADDR = "localhost:9876"; public static void main(String[] args) { // 分组名 String groupName = "myGroup-1"; // 主题名 String topicName = "myTopic-1"; // 标签名 String tagName = "myTag-1"; new Thread(() -> { try { producer(groupName, topicName, tagName); } catch (InterruptedException e) { e.printStackTrace(); } catch (RemotingException e) { e.printStackTrace(); } catch (MQClientException e) { e.printStackTrace(); } catch (MQBrokerException e) { e.printStackTrace(); } }).start(); new Thread(() -> { try { consumer(groupName, topicName, tagName); } catch (MQClientException e) { e.printStackTrace(); } }).start(); } /** * @Description 生产者 * @Author wanglei * @Param [groupName 分组名, topicName 主题名, tagName 标签名] **/ public static void producer(String groupName, String topicName, String tagName) throws InterruptedException, RemotingException, MQClientException, MQBrokerException { DefaultMQProducer producer = new DefaultMQProducer(groupName); producer.setNamesrvAddr(MQ_NAMESRVADDR); producer.start(); String body = "Hello, 老王"; Message message = new Message(topicName, tagName, body.getBytes()); producer.send(message); producer.shutdown(); } /** * @Description 消费者 * @Author wanglei * @Param [groupName 分组名, topicName 主题名, tagName 标签名] **/ public static void consumer(String groupName, String topicName, String tagName) throws MQClientException { DefaultMQPushConsumer consumer = new DefaultMQPushConsumer(groupName); consumer.setNamesrvAddr(MQ_NAMESRVADDR); consumer.subscribe(topicName, tagName); consumer.registerMessageListener(new MessageListenerConcurrently() { @Override public ConsumeConcurrentlyStatus consumeMessage( List<MessageExt> msgs, ConsumeConcurrentlyContext context) { for (MessageExt msg : msgs) { System.out.println(new String(msg.getBody())); } return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; } }); consumer.start(); } }
以上程序执行结果如下:
Hello, 老王
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Jmeter + Grafana搭建实时监控可视化
- 前端工程实践之可视化搭建系统(一)
- 使用 QuickBI 搭建酷炫可视化分析
- Arduino MQTT 搭建物联网可视化温度实时监测
- 可视化搭建平台的地图组件和日历组件方案选型
- 基于 vue 的移动端页面可视化搭建工具思路
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
并行算法的设计与分析
陈国良 / 2009-8 / 66.00元
第3版在修订版的基础上进行了大幅度的修订,新增加3章、重写3章,改写8章。《普通高等教育十一五国家级规划教材·并行算法的设计与分析(第3版)》系统深入地讨论了计算机领域中诸多计算问题的并行算法的设计和分析方法。在着重介绍各种并行计算模型上的常用和典型的并行算法的同时,也力图反映本学科的最新成就、学科前沿和发展趋势。 全书共分二十章,包括基础篇4章(绪论、设计技术、前缀计算、排序和选择网络),......一起来看看 《并行算法的设计与分析》 这本书的介绍吧!