RocketMQ - 阿里云部署

RocketMQ - 阿里云部署

1、安全组

开启端口9876和10909、10911:

在这里插入图片描述

2、下载RocketMQ

http://rocketmq.apache.org/release_notes/release-notes-4.4.0/

环境要求:
Linux 64位操作系统
64bit JDK 1.8+

3、安装RocketMQ

1.上传文件到Linux系统

[root@heima rocketmq]# ls /usr/local/src/
rocketmq-all-4.4.0-bin-release.zip

2 解压到安装目录

[root@heima src]# unzip rocketmq-all-4.4.0-bin-release.zip
[root@heima src]# mv rocketmq-all-4.4.0-bin-release ../rocketmq

4、启动RocketMQ

1切换到安装目录

[root@heima rocketmq]# ls
benchmark bin conf lib LICENSE NOTICE README.md

2 启动NameServer

[root@heima rocketmq]# nohup ./bin/mqnamesrv &
[1] 1467
# 只要进程不报错,就应该是启动成功了,可以查看一下日志
[root@heima rocketmq]# tail -f /root/logs/rocketmqlogs/namesrv.log

3 启动Broker

在这里插入图片描述

修改conf文件后执行启动命令:

# 编辑bin/runbroker.sh  和  bin/runserver.sh文件,修改里面
#  把默认的JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"
#    修改为JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
# [-n :指定namesrv的地址  -c :指定所引用的配置地址]
[root@heima rocketmq]# nohup bin/mqbroker -n localhost:9876 -c ./conf/broker.conf  autoCreateTopicEnable=true &
[root@heima rocketmq]# tail -f /root/logs/rocketmqlogs/broker.log

5、 测试RocketMQ

1 测试消息发送

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

2 测试消息接收

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

6、 关闭RocketMQ

[root@heima rocketmq]# bin/mqshutdown broker
[root@heima rocketmq]# bin/mqshutdown namesrv

7、RocketMQ控制台安装

1 下载

# 在git上下载下面的工程 rocketmq-console-1.0.0
https://github.com/apache/rocketmq-externals/releases

2 修改配置文件

# 修改配置文件 rocketmq-console\src\main\resources\application.properties
server.port=7777 #项目启动后的端口号
rocketmq.config.namesrvAddr=39.101.160.246:9876 #nameserv的地址,注意防火墙要开启
9876端口

3 打成jar包,并启动

# 进入控制台项目,将工程打成jar包
mvn clean package -Dmaven.test.skip=true
# 启动控制台
java -jar target/rocketmq-console-ng-1.0.0.jar

4 访问控制台

在这里插入图片描述

二、消息发送和接收演示

消息发送步骤:

  1. 创建消息生产者, 指定生产者所属的组名
  2. 指定Nameserver地址
  3. 启动生产者
  4. 创建消息对象,指定主题、标签和消息体
  5. 发送消息
  6. 关闭生产者
package com.timing.coupon;

import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;

public class RocketMQSendMsgTest {

    //发送消息
    public static void main(String[] args) throws Exception {

        //1.创建消息生产者,并且设置生产组名
        DefaultMQProducer producer = new DefaultMQProducer("myproducer-group");

        /**
        *  配置后解决consumer启动后不消费、No route info of this topic问题
        */
        //关闭vip通道;阿里云部署的时候必须设置
        producer.setVipChannelEnabled(false);

        //2.指定Nameserver地址: 阿里云
        producer.setNamesrvAddr("39.101.160.246:9876");

        //本地Nameserver地址
//        producer.setNamesrvAddr("127.0.0.1:9876");

        //3.启动生产者
        producer.start();


        //4.创建消息对象,指定主题、标签和消息体
        Message msg = new Message("myTopic123", "Tag",
                ("RocketMQ Message").getBytes());

        //5. 发送消息
        SendResult sendResult = producer.send(msg,10000);
        System.out.println(sendResult);

        //6. 关闭生产者
        producer.shutdown();

    }
}

消息接收步骤:

  1. 创建消息消费者, 指定消费者所属的组名
  2. 指定Nameserver地址
  3. 指定消费者订阅的主题和标签
  4. 设置回调函数,编写处理消息的方法
  5. 启动消息消费者
package com.timing.coupon;

import com.alibaba.fastjson.JSON;
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.client.producer.DefaultMQProducer;
import org.apache.rocketmq.common.message.MessageExt;

import java.util.List;

public class RocketMQReceiveMsgTest {

    //接受消息
    public static void main(String[] args) throws Exception {

        //1.创建消费者,并且为其指定消费者组名
        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("myconsumer-group");

        //2.为消费者设置NameServer的地址
        consumer.setNamesrvAddr("39.101.160.246:9876");
//        consumer.setNamesrvAddr("127.0.0.1:9876");

        //3.指定消费者订阅的主题和标签
        consumer.subscribe("myTopic123", "*");

        //4.设置回调函数,编写处理消息的方法
        consumer.registerMessageListener(new MessageListenerConcurrently() {
            //处理获取到的消息
            @Override
            public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msg, ConsumeConcurrentlyContext consumeConcurrentlyContext) {

                //消费逻辑
                System.out.println("Message====>"+ msg);
                //返回消费者成功状态
                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
            }
        });

        //5. 启动消息消费者
        consumer.start();
        System.out.println("启动消费者成功....");

    }
}

windows下RocketMQ安装部署

https://www.jianshu.com/p/4a275e779afa

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值