kafka 可视化工具_RocketMQ 可视化环境搭建和基础代码使用

5053d927e12571035f33ec7797653de3.png

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


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


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

dae075781dea7bc431dab6d698a79a30.png

1 安装 RocketMQ—Windows 版本

(1)下载 Windows 安装包

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

abd140069e9f04e34f3bb2c56551b22f.png


下载并解压 rocketmq 安装包。

(2)配置系统环境变量

配置系统变量 ROCKETMQ_HOME=“D:softrocketmq-all-4.5.1-bin-release”,如下图所示:
注意:每个人 rocketmq 存放目录不一样,我的在 D:soft 下,用户根据自己的环境配置相应的系统变量。

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

(3)启动 namesrv

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

0372fa97cdaf34206ab8bde867e9ee17.png


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

(4)启动 broker

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

38b54bd480816c1ac4f2bb409fac9eae.png


同样不要关闭以上运行窗口。
完成以下步骤,说明你的 RocketMQ 已经按照成功了。

2 安装可视化插件

(1)下载插件

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

69c9ef09dcc72b4144a8a287ed22eadd.png


点击 Download ZIP 进行下载。

我为大家准备了国内百度云的下载链接,方便大家使用。 百度链接: https:// pan.baidu.com/s/1sMO6W- 562IFJF1uUBQFXYg 提取码:fuzy

(2)配置插件

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

e2539387e9cd85f25ce67a1e1db001fb.png

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

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

(3)编译插件

进入 rocketmq-externalsrocketmq-console 文件夹,执行 mvn cleanpackage-Dmaven.test.skip=true
编译项目。
编译成功如下图所示:

fa2a1b15d048b118e2c238946f302863.png

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

267d8048df05662b259dc1e8d920f435.png

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, 老王
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值