RocketMQ 可视化环境搭建和基础代码使用

栏目: 后端 · 发布时间: 6年前

内容简介:Windows 版本下载地址:下载并解压 rocketmq 安装包。

RocketMQ 是一款分布式消息中间件,最初是由阿里巴巴消息中间件团队研发并大规模应用于生产系统,满足线上海量消息堆积的需求, 在 2016 年底捐赠给 Apache 开源基金会成为孵化项目,经过不到一年时间正式成为了 Apache 顶级项目。

早期阿里曾经基于 ActiveMQ 研发消息系统, 随着业务消息的规模增大,瓶颈逐渐显现,后来也考虑过Kafka,但因为在低延迟和高可靠性方面没有选择,最后才自主研发了 RocketMQ, 各方面的性能都比目前已有的消息队列要好,RocketMQ 和 Kafka 在概念和原理上都非常相似,所以也经常被拿来对比;RocketMQ 默认采用长轮询的拉模式, 单机支持千万级别的消息堆积,可以非常好的应用在海量消息系统中。

本文分为三部分,如下图所示:

RocketMQ 可视化环境搭建和基础代码使用

1 安装 RocketMQ—Windows 版本

(1)下载 Windows 安装包

Windows 版本下载地址: http://rocketmq.apache.org/release_notes/

RocketMQ 可视化环境搭建和基础代码使用

下载并解压 rocketmq 安装包。

(2)配置系统环境变量

配置系统变量 ROCKETMQ_HOME=“D:softrocketmq-all-4.5.1-bin-release”,如下图所示:

注意:每个人 rocketmq 存放目录不一样,我的在 D:soft 下,用户根据自己的环境配置相应的系统变量。

RocketMQ 可视化环境搭建和基础代码使用

因为接下来启动 mqnamesrv.cmd 中使用到了环境变量 %ROCKETMQ_HOME%,所以这里需要配置此系统变量。

(3)启动 namesrv

进入 rocketmq 的 bin 目录,执行 start mqnamesrv.cmd ,执行成功如下图所示:

RocketMQ 可视化环境搭建和基础代码使用

注意:启动之后,不能关闭此窗口。

(4)启动 broker

还是在 bin 目录下执行 start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true ,执行成功如下图所示:

RocketMQ 可视化环境搭建和基础代码使用

同样不要关闭以上运行窗口。

完成以下步骤,说明你的 RocketMQ 已经按照成功了。

2 安装可视化插件

(1)下载插件

打开连接 https://github.com/apache/roc... 下载可视化插件 rocketmq-externals,如下图所示:

RocketMQ 可视化环境搭建和基础代码使用

点击 Download ZIP 进行下载。

我为大家准备了国内百度云的下载链接,方便大家使用。

百度链接: https://pan.baidu.com/s/1sMO6...

提取码:fuzy 

(2)配置插件

下载完成之后,进入 rocketmq-externalsrocketmq-consolesrcmainresourcesapplication.properties 进行配置,如下图所示:

RocketMQ 可视化环境搭建和基础代码使用

其中主要的字段说明如下:

  • server.port=8066:此可视化插件的运行端口。
  • rocketmq.config.namesrvAddr=127.0.0.1:9876:rocketmq 的链接信息。

(3)编译插件

进入 rocketmq-externalsrocketmq-console 文件夹,执行 mvn clean package -Dmaven.test.skip=true

编译项目。

编译成功如下图所示:

RocketMQ 可视化环境搭建和基础代码使用

编译阶段有可能出现以下两个问题,没有找到 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 进行访问,效果如下图:

RocketMQ 可视化环境搭建和基础代码使用

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, 老王

RocketMQ 可视化环境搭建和基础代码使用


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Ordering Disorder

Ordering Disorder

Khoi Vinh / New Riders Press / 2010-12-03 / USD 29.99

The grid has long been an invaluable tool for creating order out of chaos for designers of all kinds—from city planners to architects to typesetters and graphic artists. In recent years, web designers......一起来看看 《Ordering Disorder》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具