linux centos7 安装 单机运行 rocketmq 4.9.2 ,java 客户端demo源码

1 yum安装 jdk:

已经安装了jdk的可以跳过 (有些只安装了jre,需要卸载重装 https://blog.csdn.net/a704397849/article/details/103809206)

注:我安装了jdk1.8

2 下载rocketmq

https://github.com/apache/rocketmq/releases

我当前下载到的最新的版本是 4.9.2

百度网盘下载
链接:https://pan.baidu.com/s/17uvg8AMshPdDpVME4GhH7g
提取码:ujif

下载上传到服务器后自己想要存放的路径,解压
tar -zxvf rocketmq-rocketmq-all-4.9.2.tar.gz

3 安装maven

我安装的maven版本 3.6.3
官方下载链接 https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

百度网盘地址
链接:https://pan.baidu.com/s/1XdLAzvoOnIlNhDjEm9ZUsg
提取码:s4cg

下载上传到服务器自己想要的目录后 解压
tar -zxvf apache-maven-3.6.3-bin.tar.gz

配置文件中新增 镜像配置
vi apache-maven-3.6.3/conf/settings.xml 在 下面一行添加镜像配置

    <mirror>
      <id>alimaven</id>
      <mirrorOf>central</mirrorOf>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    </mirror>

配置环境变量,vi /etc/profile 在最下面添加以下内容,注意:MAVEN_HOME=/usr/local/src/apache-maven-3.6.3 路径改成你自己实际所放的路径

MAVEN_HOME=/usr/local/src/apache-maven-3.6.3
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin

然后执行下面命令 让配置生效
source /etc/profile

验证maven安装成功,执行命令
mvn -v

4 编译安装 rocketmq

在 rocketmq-rocketmq-all-4.9.2 目录下执行 mvn -Prelease-all -DskipTests clean install -U

需要等待大概几分钟,最终成功如图
在这里插入图片描述
注意:如果 java环境只安装了jre没安装jdk的话,上面操作会失败报错如下:

No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

如果是yum安装的jdk,解决办法: https://blog.csdn.net/a704397849/article/details/103809206 ,重装jdk后要执行下命令 source /etc/profile

5 rocketmq 启动

编译安装成功后,rocketmq的安装目录在

rocketmq-rocketmq-all-4.9.2/distribution/target/rocketmq-4.9.2/rocketmq-4.9.2

修改2个启动脚本中 占用内存的配置(默认的内容 2g左右,可能出现内存不足导致启动失败)
注:具体修改多大的内存配置 根据自己项目实际需求决定

进入rocketmq安装目录后,
vi bin/runserver.sh 后编辑如下图
在这里插入图片描述

vi bin/runbroker.sh 后编辑如下图
在这里插入图片描述

启动 mqnamesrv ,运行日志在当前目录的nohup.out

nohup ./bin/mqnamesrv -n 你的IP:9876 &

注意 IP 看你自己需求,如果外网访问 写你的公网IP ,如果只是内网访问 写内网的IP,如果只是内部单机用 写 127.0.0.1
后面出现的IP 同理

broker配置添加IP
先在conf/broker.conf 中最后 添加两行

namesrvAddr=你的IP:9876
brokerIP1=你的IP

如下图:
在这里插入图片描述

启动 mqbroker ,运行日志在当前目录的nohup.out

nohup sh bin/mqbroker -n 你的IP:9876 -c conf/broker.conf autoCreateTopicEnable=true &

关闭服务器
sh bin/mqshutdown broker //停止 broker
sh bin/mqshutdown namesrv //停止 nameserver

6 验证

发送
export NAMESRV_ADDR=你的IP:9876
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

可以看到发送了N条消息,不再发送后 crtl+c 结束 发送测试程序

接收
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

可以看到收到了N条消息,没有新的消息接收后 crtl+c 结束 接收测试程序

到此 rocketmq 安装完成。

7 其他

如 常用命令、控制台等 自行百度吧

8 java 客户端 简单demo源码

maven依赖 注意:安装的rocketmq版本是多少,对应的客户端依赖版本需要一致

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

消费者

        try {
            System.out.println("Consumer Starting...");
            DefaultMQPushConsumer consumer=new DefaultMQPushConsumer("group_name");//参数是组名
            consumer.setNamesrvAddr("127.0.0.1:9876");//
            consumer.setInstanceName("consumer_name");
            consumer.subscribe("your_topic","*");//topic , tag
            consumer.registerMessageListener(new MessageListenerConcurrently() {
                @Override
                public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> list, ConsumeConcurrentlyContext consumeConcurrentlyContext) {
                    try {
                        for (MessageExt msg:list){
							System.out.println(String(msg.getBody()));
							return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
                    }catch (Exception e){
                        System.out.println("getMessage error: " + e.getMessage());
                    }
                    return ConsumeConcurrentlyStatus.RECONSUME_LATER;
                }
            });
            consumer.start();
            System.out.println("Consumer Started...");
        }catch (Exception e){
            System.out.println("Consumer Start failed!");
            e.printStackTrace();
        }

生产者

        try {
	        System.out.println("Producer Starting...");
            DefaultMQProducer producer = new DefaultMQProducer("group_name");//参数是组名
            producer.setNamesrvAddr("127.0.0.1:9876");
            producer.setInstanceName("producer_name");
            producer.start();
            producer.setRetryTimesWhenSendAsyncFailed(2);//失败重试的几次 , 0 一直尝试
            System.out.println("Producer Started...");
            for (int i = 0; i < 5; i++) {
                try {
                    final int index = i;
                    Message msg = new Message("your_topic",
                            "TagA",
                            "OrderID188",
                            "{\"content\":\"Hello world\"}".getBytes(RemotingHelper.DEFAULT_CHARSET));
                    producer.send(msg, new SendCallback() {
                        @Override
                        public void onSuccess(SendResult sendResult) {
                            System.out.printf("%-10d OK %s %n", index, sendResult.getMsgId());
                        }

                        @Override
                        public void onException(Throwable e) {
                            System.out.printf("%-10d Exception %s %n", index, e);
                            e.printStackTrace();
                        }
                    });
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
//            producer.shutdown();
        }catch (Exception e){
            e.printStackTrace();
            System.out.println("Producer Start failed!");
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值