终极必杀-rocketMQ在LINUX系统安装到部署

  • . 简介:RocketMQ4.x本地快速部署

    • RocketMQ核⼼组件
      • Broker:MQ程序,接收⽣产的消息,提供给消费者消费的程序
      • Name Server:给⽣产和消费者提供路由信息,提供轻量级的服务发现、路由、元数据信
        息,可以多个部署,互相独⽴(⽐zookeeper更轻量)
  • . 运行环境 JDK版本:1.8.0_221 rocketmq版本:rocketmq-all-4.4.0

  • . 下载地址:http://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.4.0/rocketmq­all­ 4.4.0­bin­release.zip 系统:centos 6.8

  • . 官网上的部署方式我就不想吐槽了,曾经是阿里开发的但是后来给了apache,还作为了顶级孵化项目,文档写的简直不能再烂,按照官方文档的来安装根本行不通。

下面进入正题(我是部署在自己购买的阿里云服务器上,用本地Java代码调试)

  1. 首先由于rocketmq是Java语音编写所以运行需要安装jdk 和maven环境。
  2. 下载地址:http://rocketmq.apache.org/dowloading/releases/.
  • 解压:unzip rocketmq-all-4.4.0-source-release.zip
  • 进入解压后的目录 cd rocketmq-all-4.4.0/
  • 安装:mvn -Prelease-all -DskipTests clean install -U
  • 之后再进目录:cd distribution/target/
  • 为了方便以后的操作 最好把 target内的 apache-rocketmq文件夹移动到usr/local/下面:
mv apache-rocketmq /usr/local/
  1. 启动前 要将rocketmq 加入环境变量执行
vim /etc/profile 
1 #rocketmq目录 
2 export ROCKETMQ_HOME=/usr/local/usr/local/apache-rocketmq
3 export PATH=$ROCKETMQ_HOME/bin:$PATH
  • 刷新下环境变量
source /etc/profile
  1. 修改/usr/local/apache-rocketmq/conf/broker.conf 加入下面3行代码(启动时要选择该配置文件)
brokerIP1 = 当前机器的外网IP
namesrvAddr = 当前机器的外网IP:9876
autoCreateTopicEnable = true (此项非常重要允许创建topic)
  • 机器内存不够(一般针对虚拟机),修改/usr/local/apache-rocketmq/bin/runserver.sh 与 /usr/local/apache-rocketmq/bin/runbroker.sh中JAVA_OPT关于内存的设置 基本设置成 128m 或者256 m 都可以。
  1. 规定是首先启动nameServer 虽然先启动谁都一样不会报错 但是我们作为程序员 要有逻辑性 和严谨性
nohup sh bin/mqnamesrv ‐n 机器的外网ip地址:9876 &
  • 查看⽇志 tail -f nohup.out (结尾:The Name Server boot success. serializeType=JSON 表示启
    动成功)
  1. 启动broker (-n指定nameserver地址,nameserver服务端⼝为9876, broker默认端⼝ 10911)
nohup sh bin/mqbroker -n localhost:9876  -c  conf/broker.conf autoCreateTopicEnable=true & tail -f nohup.out
  • 看到屏幕上输出下面这句话 说明启动成功 否则用代码调用的时候肯定会报错的
The broker[broker-a, 你机器的外网IP地址:10911] boot success. serializeType=JSON and name server is localhost:9876
  • 也可以使用jps命令查看进程
  • 下面介绍一下关闭服务
 sh bin/mqshutdown broker
 sh bin/mqshutdown namesrv
  • 由于本人的服务器是阿里云 所以别忘记把阿里云的安全组端口打开 9876 和10911 另外还有一个端口是rocketmq的VIP端口 10909 在JAVA中的消费者对象或者是生产者对象中关闭VIP通道即可无需开放10909端口。下面我会提到如何关闭VIP端口
  • 下面说用Java代码来测试rocketmq

框架是Springboot 配置文件我比较喜欢yml 方式 (萝卜青菜各有所爱)

  1. 先配置yml文件
rocketmq:
consumer:
  # RocketMQ的请求地址
  namesrvAddr: 服务器的IP地址:9876
  # 发送同一类消息的设置为同一个group,保证唯一,默认不需要设置,rocketmq会使用ip@pid(pid代表jvm名字)作为唯一标示
  groupName: test-demo
  1. 配置个Bean 来读取rocketMQ的配置
package com.she.userapp.config;
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


@Configuration
public class RocketMQConfig {

   private static final Logger log = LoggerFactory.getLogger(RocketMQConfig.class);

   @Value("${rocketmq.consumer.groupName}")
   private String groupName;
   @Value("${rocketmq.consumer.namesrvAddr}")
   private String namesrvAddr;
   
  @Bean
   public DefaultMQProducer defaultMQProducer() throws MQClientException {
       DefaultMQProducer producer = new DefaultMQProducer(groupName);
       producer.setNamesrvAddr(namesrvAddr);
       producer.setRetryTimesWhenSendAsyncFailed(10);
       producer.start();
       log.info("start rocketmq producer success!");
       return producer;
     }
   }
  1. 下面我们再新建个测试controller
package com.she.userapp.controllor;

import com.alibaba.fastjson.JSON;
import com.she.userapp.config.RedisCacheUtil;
import com.she.userapp.service.CouponService;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendCallback;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

@RestController
public class TestControllor {
    @RequestMapping("/test2")
   public String test2()throws Exception{
       Message message = new Message("TopicTest", "Tag1", "12345", "rocketmq测试成功".getBytes());
       producer.setVipChannelEnabled(false);
       // 这里用到了这个mq的异步处理,类似ajax,可以得到发送到mq的情况,并做相应的处理
       //不过要注意的是这个是异步的
       producer.send(message, new SendCallback() {
           @Override
           public void onSuccess(SendResult sendResult) {
               log.info("传输成功");
               log.info(JSON.toJSONString(sendResult));
           }

           @Override
           public void onException(Throwable e) {
               log.error("传输失败", e);
           }
       });
       return "aaa";
    }
   }

4.浏览器访问这个controller 看到idea的console页面出现下文说明成功:

2019-12-26 10:23:02,797 [NettyClientPublicExecutor_1] [INFO TestControllor:55] - 传输成功
2019-12-26 10:23:02,799 [NettyClientPublicExecutor_1] [INFO TestControllor:56] - {"messageQueue":{"brokerName":"broker-a","queueId":3,"topic":"TopicTest"},"msgId":"C0A8E13F2B6C18B4AAC282F9665B0000","offsetMsgId":"2769365900002A9F000000000002C338","queueOffset":250,"regionId":"DefaultRegion","sendStatus":"SEND_OK","traceOn":true}

作者的初衷 1:是记录自己的工作 2:也是希望大家少走一些弯路,由于部署这个弄了1天半 发现网上的帖子或多或少也存在一些坑所以想写一篇记录这个部署的全部过程,也希望大家能从本文中有所收获。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在CentOS上安装RocketMQ,您可以按照以下步骤进行操作: 1. 下载RocketMQ安装包: 使用wget命令下载RocketMQ安装包,例如: ``` wget https://dlcdn.apache.org/rocketmq/4.9.1/rocketmq-all-4.9.1-bin-release.zip ``` 这里引用了。 2. 解压安装包: 使用unzip命令解压下载的安装包,例如: ``` unzip rocketmq-all-4.9.1-bin-release.zip ``` 3. 配置RocketMQ: 进入解压后的目录,编辑broker.conf文件,例如: ``` vi /usr/local/rocketmq-all-4.9.1-bin-release/conf/broker.conf ``` 这里引用了。在配置文件中,您可以设置rocketmq.config.namesrvAddr参数为您的NameServer地址,例如: ``` rocketmq.config.namesrvAddr=xxx.xxx.xxx.xx ``` 这里引用了。 4. 启动RocketMQ: 在RocketMQ安装目录下执行启动命令,例如: ``` ./bin/mqnamesrv ./bin/mqbroker -n localhost:9876 ``` 5. 验证安装: 可以使用RocketMQ提供的命令行工具进行简单的验证,例如: ``` ./bin/tools.sh org.apache.rocketmq.example.quickstart.Producer ./bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer ``` 请注意,以上步骤仅提供了CentOS上安装RocketMQ的基本过程,具体操作可能会因版本和环境而有所不同。您可以参考RocketMQ官方文档进行更详细的安装和配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [centos 安装rocketmq](https://blog.csdn.net/xiaoyaozizai1/article/details/119977629)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值