rocketmq linux 安装教程 以及本地连接远程

rocketmq 官网网址:http://rocketmq.apache.org/docs/quick-start/

准备

  linux 服务器

  操作系统 CentOS

  

1.下载zip 到linux系统上(下载二进制包,不要下载资源包)

  随便下载一个镜像仓库下载:rocketmq-all-4.7.1-bin-release.zip

2.开始安装

  2.1 rocketmq 是基于JVM运行的,所以要有java 环境  java -version 查看,没有则需要安装

   

 

   2.2 用unzip rocketmq-all-4.7.1-bin-release.zip 解压压缩包

  2.3  重命名  rename rocketmq-all-4.7.1-bin-release/  rocketmq rocketmq-all-4.7.1-bin-release/

3.启动

  3.1 修改日志位置:rocketmq 默认的日志位置再${user.home}  linux 对应的位置在 /root/home 文件下,修改日志位置到rocketmq 下

    cd /data/middleware/rocketmq/conf  打开 logback_namesrv.xml 

    将${user.home} 修改为 /data/middleware/rocketmq

    在/data/middleware/rocketmq 创建logs 文件夹

  

 

 

 

 3.1 找到bin目录下 /data/middleware/rocketmq/bin 

    sh mqnamesrv 启动server 

 

 

  启用为后台运行,并输入运行日志到namesrv.log 中

  nohup sh mqnamesrv  > /data/middleware/rocketmq/logs/rocketmqlogs/namesrv.log 2>&1 &

 

 3.2 修改broker 的日志文件地址和启动broker

  

 

 

   启动报错,因为mq需要的内存空间不足,需要重新分配内存空间

  查看mqbroker 脚本发现最终执行的是runbroker.sh .在其中看到JAVA_OPT 的配置,修改默认配置

  

 

 红框中配置的堆栈空间已经大于服务器剩余内存2G,所以设置为1G

 

 再次启动

  nohup sh  mqbroker -n localhost:9876 > /data/middleware/rocketmq/logs/rocketmqlogs/broker.log 2>&1 &

 

 4.测试是否可运行

  4.1 暴露服务地址  export NAMESRV_ADDR=localhost:9876

  4.2 启动消费者:

  

 

  4.3 启动生产者:打开一个新控制台,生产者开始投递消息

  

 

   4.4 消费者开始消费

  

 

 5.本地连接远程  xxx.xxx.xxx.xxx 表示公网ip

 

  5.1 本地也需要安装rocketmq ,修改rocketmq 下conf/broker.xml 增加如下配置

    brokerIP1=xxx.xxx.xxx.xxx 

  5.2 服务器安全组开放9876 端口

  5.3 windows 本地启动:

     start .\mqnamesrv

    start .\mqbroker -n xxx.xxx.xxx.xxx:9876

  5.4 测试代码

    消费者

  

package com.example.demo.rocketmq;
import java.util.List;

/**
*
* @description: 消费者
*
* @author: coderxiao
*
* @create: 2020-09-23 20:13
**/
public class RocketConsumer {

    public static void main(String[] args) {
        DefaultMQPushConsumer consumer=new DefaultMQPushConsumer("xy");
        consumer.setNamesrvAddr("xxx.xxx.xxx.xxx:9876");
        try {
            consumer.subscribe("TopicTest","*");
        } catch (MQClientException e) {
            e.printStackTrace();
        }

        consumer.registerMessageListener(new MessageListenerConcurrently() {
            @Override
            public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
                System.out.println("业务数据"+new String(msgs.get(0).getBody()));
                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
            }
        });
        try {
            consumer.start();
        } catch (MQClientException e) {
            e.printStackTrace();
        }

    }

}

 

  生产者

  

public class RocketProducer {

    @Test
    public  void test1() {
        DefaultMQProducer producer=new DefaultMQProducer("xy");
        producer.setNamesrvAddr("xxx.xxx.xxx.xxx:9876");
        producer.setCreateTopicKey("TopicTest");
        try {
            producer.start();
            for (int i=0;i<10;i++){
                try {
                    Message message=new Message("TopicTest","tagA", ("who are you"+i).getBytes(RemotingHelper.DEFAULT_CHARSET));
                    SendResult sendResult=producer.send(message);
                    System.out.println("发送结果:"+sendResult);
                } catch (RemotingException e) {
                    e.printStackTrace();
                } catch (MQBrokerException e) {
                    e.printStackTrace();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }catch (Exception e){e.printStackTrace();}
            }

        } catch (MQClientException e) {
            e.printStackTrace();
        }finally {
            producer.shutdown();
        }
    }
}

解决:loseChannel: close the connection to remote address[] result: true 这个问题

本地连接远程消费

 

  

    

  

  

 

posted @ 2020-10-25 15:35  zero_and_one  阅读(2165)  评论(0编辑  收藏  举报