阿里云 ECS 安装 RocketMQ

5 篇文章 0 订阅
5 篇文章 0 订阅


RocketMQ作为一款纯java、分布式、队列模型的开源消息中间件,支持事务消息、顺序消息、批量消息、定时消息、消息回溯等。主要功能是异步解耦和流量削峰。系统组成则由Producer、Consumer、Broker、NameServer等。

1、下载 RocketMQ

RocketMQ 官网:https://rocketmq.apache.org/

在这里插入图片描述
在这里插入图片描述

2、安装 RocketMQ

在这里插入图片描述

2.1. 创建 rocketmq安装目录

mkdir -p /usr/local/rocketmq

2.2. 将安装包解压到新建的安装目录

unzip -d /usr/local/rocketmq rocketmq-all-4.9.4-bin-release.zip

2.3. 进入 rocketmq 安装目类

cd /usr/local/rocketmq/rocketmq-all-4.9.4-bin-release

2.4. 创建存放数据的目录

mkdir -p store store/commitlog store/consumequeue

2.5. 进入 conf 目录

cd conf

在这里插入图片描述

2.6. 编辑 broker.conf 文件( 在 broker.conf 文件中追加下面内容)

listenPort=10911
namesrvAddr=localhost:9876
brokerIP1=公网IP
storePathRootDir=/usr/local/rocketmq/rocketmq-all-4.9.4-bin-release/store
storePathCommitLog=/usr/local/rocketmq/rocketmq-all-4.9.4-bin-release/store/commitlog
storePathConsumerQueue=/usr/local/rocketmq/rocketmq-all-4.9.4-bin-release/store/consumequeue

在这里插入图片描述

2.7. 修改内存大小(如果机器内存足够,可以跳过这步)

cd /usr/local/rocketmq/rocketmq-all-4.9.4-bin-release/bin
// 编辑 runbroker.sh 文件和 runserver.sh 文件,修改内存大小
vim runbroker.sh

在这里插入图片描述

vi runserver.sh

在这里插入图片描述

2.8. 开放端口

//开放防火墙 9876 和 10911 端口
firewall-cmd --zone=public --add-port=9876/tcp --permanent
firewall-cmd --zone=public --add-port=10911/tcp --permanent

//更新防火墙规则(无需断开连接,动态添加规则)
firewall-cmd --reload

//查看防火墙所有开放的端口
firewall-cmd --list-port

在这里插入图片描述

3、启动 RocketMQ

3.1 启动nameserver

nohup sh mqnamesrv &

//查看启动日志
tail -f nohup.out

在这里插入图片描述

3.2 启动 broker

nohup sh mqbroker -c /usr/local/rocketmq/rocketmq-all-4.9.4-bin-release/conf/broker.conf &

//查看启动日志
tail -f nohup.out

在这里插入图片描述

3.3 查看服务是否启动

jps -l

在这里插入图片描述

3.4 模拟发送消息 和 消费消息

  • 创建生产者发送消息

[root@dmjxsy bin]# export NAMESRV_ADDR=localhost:9876
[root@dmjxsy bin]# sh tools.sh org.apache.rocketmq.example.quickstart.Producer

在这里插入图片描述

  • 消费消息

[root@dmjxsy bin]# export NAMESRV_ADDR=localhost:9876
[root@dmjxsy bin]# sh tools.sh org.apache.rocketmq.example.quickstart.Consumer

在这里插入图片描述

3.5 关闭 Broker

 sh bin/mqshutdown broker

3.6 关闭 NameServer

sh bin/mqshutdown namesrv

4、代码测试

4.1 添加依赖

<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-client</artifactId>
    <version>4.9.4</version>
</dependency>

4.2 生产者

package com.cic.cn;

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;

/**
 * SyncProducer
 *
 * @author wsjz
 * @date 2022/07/01
 */
public class SyncProducer {

    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("公网IP:9876");
        //producer.setVipChannelEnabled(false);
        //Launch the instance.
        producer.start();
        for (int i = 0; i < 10; 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.setSendMsgTimeout(1000000);
            SendResult sendResult = producer.send(msg);
            System.out.printf("%s%n", sendResult);
        }
        //Shut down once the producer instance is not longer in use.
        producer.shutdown();
    }
}

在这里插入图片描述

4.2 消费者

package com.cic.cn;


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.client.consumer.listener.MessageListenerConcurrently;
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.common.message.MessageExt;
import java.util.List;

/**
 * Consumer
 *
 * @author wsjz
 * @date 2022/07/01
 */
public class Consumer {

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

        // Instantiate with specified consumer group name.
        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("please_rename_unique_group_name");

        // Specify name server addresses.
        consumer.setNamesrvAddr("47.98.215.211: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<MessageExt> 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");
    }
}

在这里插入图片描述

5、RocketMQ Dashboard 安装

5.1 下载源码

RocketMQ Dashboard 源码地址:https://github.com/apache/rocketmq-dashboard

5.2 修改配置

在这里插入图片描述

5.3 启动项目

浏览器访问 http://localhost:8080
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值