首页 > 其他分享 >Rocketmq的单机搭建和消息分发时遇到的坑

Rocketmq的单机搭建和消息分发时遇到的坑

时间:2024-06-14 23:24:40浏览次数:19  
标签:bin 分发 单机 app maven Rocketmq HOME rocketmq dashboard

1.首先准备 Jdk、rocketmq-dashboard-master、apache-maven-3.9.7-bin.tar.gz、rocketmq-all-5.1.0-bin-release.zip 这几样,dashboard是rocketmq的可视化工具,需要maven编译所以需要。

 2.创建一个app目录将所有文件解压,

 

maven要修改config文件更换数据源,创建一个repository仓库

<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">
  <!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
   -->
  <localRepository>/app/repository</localRepository> 
  <pluginGroups>
  </pluginGroups>
  <proxies>
  </proxies>
  <servers>  
  </servers>
  <mirrors>
  <mirror> 
    <id>nexus-aliyun</id> 
    <mirrorOf>*</mirrorOf>
    <name>Nexus aliyun</name> 
    <url>https://maven.aliyun.com/repository/public</url> 
  </mirror>
</mirrors>
<profiles>
</profiles>
</settings>

修改/etc/profile文件内容,放到文件最下面,修改完后用source /etc/profile更新环境

export JAVA_HOME=/app/jdk/
PATH=$MAVEN_HOME/bin:$ROCKETMQ_HOME/bin:$JAVA_HOME/bin:$PATH:$HOME/.local/bin:$HOME/bin
export ROCKETMQ_HOME=/app/rocketmq-all-5.1.0-bin-release
export NAMESRV_ADDR=公网IP:9876
export MAVEN_HOME=/app/apache-maven-3.9.7

修改/app/rocketmq-all-5.1.0-bin-release/conf中的配置

#允许自动创建topic
autoCreateTopicEnable=true
#添加nameserver地址
namesrvAddr=公网ip:9876
brokerIP1=公网ip

修改runborker。sh文件

 修改runserver.sh文件

 

在rocketmq-dashboard-master中使用mvn命令编辑mvn clean package maven.test.skip=true,打包失败的话可以换mvn clean install -U  -Dmaven.test.skip=true清除后重新编译

编译成功后,先在cd /app/rocketmq-all-5.1.0-bin-release/bin/中去

运行 nameserver----》nohup ./mqnamesrv &,

运行borker---》 nohup ./mqbroker -c ../conf/broker.conf &

回到cd /app/rocketmq-dashboard-master/target/中去

启动rocketmq-dashboard---》nohup java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar &

启动完成后用jps命令查看启动情况,

在阿里云服务器上需要放开namersrv-9876,borker-10911,dashboard-8080端口

注意如果按了宝塔需要到安全中开放相应端口,否则请求不通。

 然后创建一个maven项目引入jar包

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

 创建producer

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

        DefaultMQProducer producer = new DefaultMQProducer("SyncProducer");
    
        producer.setNamesrvAddr("公网ip:9876");
        producer.start();

        for (int i = 0; i < 10; i++) {
            try {
                {
                    Message msg = new Message("SyncProducer",
                        "TagA"+i,
                        "Hello world".getBytes(RemotingHelper.DEFAULT_CHARSET));
                    SendResult sendResult = producer.send(msg,8000);
                    System.out.printf("%s%n", sendResult);
                }

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
      
        //producer.shutdown();
    }
}

 创建消费者

public class PushConsumer {

    public static void main(String[] args) throws InterruptedException, MQClientException {
        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("SyncProducer");
        consumer.subscribe("SyncProducer", "*");
        consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);
        //wrong time format 2017_0422_221800
        //consumer.setConsumeTimestamp("20181109221800");
        consumer.setNamesrvAddr("公网ip:9876");
        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;
            }
        });
        consumer.start();
        System.out.printf("Consumer Started.%n");
    }

  

标签:bin,分发,单机,app,maven,Rocketmq,HOME,rocketmq,dashboard
From: https://www.cnblogs.com/qiao88/p/18248818

相关文章

  • dolphinscheduler单机版部署教程
    目录前言一、安装准备1.安装条件2.安装jdk3.安装MySQL二、安装dolphinscheduler1.下载并解压dolphinscheduler2.修改配置文件2.1修改dolphinscheduler_env.sh文件2.2修改application.yaml文件3.配置mysql数据源3.1修改MySQL安全策略3.2查看数据库3.3创建数据库3.4......
  • RSS 解析:全球内容分发的利器及使用技巧
    使用RSS可以将最新的网络内容从一个网站分发到全球数千个其他网站。RSS允许快速浏览新闻和更新。RSS文档示例<?xmlversion="1.0"encoding="UTF-8"?><rssversion="2.0"><channel><item></item><item></item></channe......
  • DNF单机源码架设教程|无需服务器|虚拟机一键搭建
    一.搭建所需要的文件获取地址:https://githubs.xyz/boot/?app=15二.搭建步骤只需一台windows系统,首先需要安装vm虚拟机目录在vm虚拟机下面安装完成打开需要输入激活序列号,在VM序列号.txt里面,16.0的左上角文件打开选择:服务端->DNFServer7.9x64.vmx打开左上角......
  • RocketMQ事务性消息
    RocketMQ事务性消息是一定能保证消息发送成功的事务消息发送步骤:(1)发送方将半事务消息发送至RocketMQ服务端。(2)RocketMQ服务端将消息持久化之后,向发送方返回ack确认消息已经发送成功。由于消息为半事务消息,在未收到生产者对该消息的二次确认前,此消息被标记成“暂不能投递”......
  • 【jmeter】测试redis读取性能(单机)
    一、场景   公司对redis节点进行增加,需要验证节点增加后,对于redis本身性能及服务性能的影响 二、使用工具jmeterredisdataset插件Documentation:https://jmeter-plugins.org/wiki/RedisDataSet/缺点:1、只支持单机2、只支持List和Set类型 三、安装可用插件搜......
  • # RocketMQ 实战:模拟电商网站场景综合案例(六)
    RocketMQ实战:模拟电商网站场景综合案例(六)一、RocketMQ实战:项目公共类介绍1、ID生成器:IDWorker:Twitter雪花算法。在shop-common工程模块中,IDWorker.java是ID生成器公共类,运用Twitter雪花算法,自动生成项目ID,而不会存在重复现象。packagecom.itheima.utils......
  • 代码随想录算法训练营第第35天 | 977.有序数组的平方1005.K次取反后最大化的数组和 、
    1005.K次取反后最大化的数组和本题简单一些,估计大家不用想着贪心,用自己直觉也会有思路。https://programmercarl.com/1005.K次取反后最大化的数组和.html自己写的时间复杂度太高,看答案优化/***@param{number[]}nums*@param{number}k*@return{number}*/varl......
  • Centos7.9使用kubeadm部署K8S单机环境
    Centos7.9使用kubeadm部署K8S单机环境使用kubeadm部署一个k8s单机环境1.环境信息操作系统:CentOS7.9.2009内存:4GBCPU:2网络:能够互访,能够访问互联网hostnameip备注k8s192.168.0.159master+worker2.准备工作在所有节点(包括Master和Worker节......
  • 充分发挥 EFSDUMP 的强大功能,使用教程 更加高效地进行加密文件系统的管理和审计。请根
    EFSDUMP的基本用法大纲:1.查看帮助信息bashCopyCodeefsdump--help这个命令将显示EFSDUMP的帮助信息,包括可用选项和参数的说明。2.提取加密文件信息bashCopyCodeefsdump<file_path>通过指定要提取信息的加密文件路径,可以使用EFSDUMP命令来获取该文件的加密属性、......
  • 应用分发策略与渠道优化:确保应用成功触达用户的关键
    应用分发是指将安卓或iOS类型的应用下载到用户手机中的过程。这个过程可以细分为上架前的内测应用分发和上架后的正式应用分发。以下是关于应用分发的详细解释:上架前的内测应用分发:主要用于应用发布前的内部测试,确保应用在正式发布前能够达到预期的功能和性能要求。例如......