Centos7安装RocketMQ及配置测试

环境

Centos7
RocketMQ 3.2.6
安装位置 /usr/local/alibaba-rockermq
外网ip 182.254.145.66
内网ip 10.105.23.114


安装

wget https://github.com/alibaba/RocketMQ/releases/download/v3.2.6/alibaba-rocketmq-3.2.6.tar.gz
tar alibaba-rocketmq-3.2.6.tar.gz
cd  alibaba-rocketmq


启动

nohup sh mqnamesrv -n 10.105.23.114:9876 & 
nohup sh mqbroker -n 10.105.23.114:9876


java测试

使用maven构建环境
			<!-- http://mvnrepository.com/artifact/com.alibaba.rocketmq/rocketmq-client -->
			<dependency>
				<groupId>com.alibaba.rocketmq</groupId>
				<artifactId>rocketmq-client</artifactId>
				<version>3.2.3</version>
			</dependency>
package rocketmq;


import java.util.Date;


import com.alibaba.rocketmq.client.exception.MQClientException;
import com.alibaba.rocketmq.client.producer.DefaultMQProducer;
import com.alibaba.rocketmq.client.producer.SendResult;
import com.alibaba.rocketmq.common.message.Message;


public class Producer {
    public static void main(String[] args) throws MQClientException, InterruptedException {
        DefaultMQProducer producer = new DefaultMQProducer("rmq-group");
        producer.setNamesrvAddr("182.254.145.66:9876");
        producer.setInstanceName("rmq-instance");
        producer.start();
        try {
            for (int i = 0; i < 3; i++) {
                Message msg = new Message("TopicA-test",// topic
                    "TagA",// tag
                        (new Date() + "Hello RocketMQ ,QuickStart" + i)
                                .getBytes()// body
                );
                SendResult sendResult = producer.send(msg);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        producer.shutdown();
    }
}




package rocketmq;


import java.util.List;


import com.alibaba.rocketmq.client.consumer.DefaultMQPushConsumer;
import com.alibaba.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
import com.alibaba.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
import com.alibaba.rocketmq.client.consumer.listener.MessageListenerConcurrently;
import com.alibaba.rocketmq.client.exception.MQClientException;
import com.alibaba.rocketmq.common.message.MessageExt;


public class Consumer {
 
    public static void main(String[] args) throws InterruptedException, MQClientException {
        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("rmq-group");
 
        consumer.setNamesrvAddr("182.254.145.66:9876");
        consumer.setInstanceName("rmq-instance");
        consumer.subscribe("TopicA-test", "TagA");
 
        consumer.registerMessageListener(new MessageListenerConcurrently() {
            @Override
            public ConsumeConcurrentlyStatus consumeMessage(
                    List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
                for (MessageExt msg : msgs) {
                    System.out.println(new String(msg.getBody()));
                }
                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
            }
        });
        consumer.start();
        System.out.println("Consumer Started.");
    }
}

运行consumer后发现
com.alibaba.rocketmq.remoting.exception.RemotingConnectException: connect to <10.105.23.114:10911> failed
在nohup.out里发现 
The broker[localhost, 10.105.23.114:10911] boot success. and name server is 182.254.145.65:9876
哎,看来还是外网内网ip的问题

上次在安装Tair的时候就碰到过类似的问题 详见  Centos7安装Tair及配置测试


最后经过多方搜索,在官方的用户说明里看到下面的方法

经过我修改后的broker.p
namesrvAddr=127.0.0.1:9876
brokerIP1=182.254.145.66
brokerName=localhost
brokerClusterName=DefaultCluster
brokerId=0
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
rejectTransactionMessage=false
fetchNamesrvAddrByAddressServer=false
storePathRootDir=/root/store
storePathCommitLog=/root/store/commitlog
flushIntervalCommitLog=1000
flushCommitLogTimed=false
deleteWhen=04
fileReservedTime=72
maxTransferBytesOnMessageInMemory=262144
maxTransferCountOnMessageInMemory=32
maxTransferBytesOnMessageInDisk=65536
maxTransferCountOnMessageInDisk=8
accessMessageInMemoryMaxRatio=40
messageIndexEnable=true
messageIndexSafe=false
haMasterAddress=
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
cleanFileForciblyEnable=true


ok!
这说明什么?说明第一手资料很重要




参考资料

http://www.jialeens.com/archives/681.html
http://www.cnblogs.com/xiaodf/p/5075167.html
### 安装 RocketMQ 单机版 #### 准备工作 确保系统已安装 JDK 1.8 或更高版本。可以通过以下命令验证 Java 版本: ```bash java -version ``` 如果未安装,则需先完成 JDK 的安装。 #### 下载并解压 RocketMQ 切换至 `/home` 目录,并通过 `wget` 工具下载指定版本的 RocketMQ 发行包[^1]: ```bash cd /home wget -O rocketmq-4.9.2.zip https://downloads.apache.org/rocketmq/4.9.2/rocketmq-all-4.9.2-bin-release.zip unzip rocketmq-4.9.2.zip -d /usr/local/ ln -s /usr/local/rocketmq /opt/rocketmq ``` 上述操作会创建软链接方便后续管理。 #### 修改 VM 参数 编辑 RocketMQ 配置文件中的 JVM 启动参数,通常位于 `${ROCKETMQ_HOME}/bin/runserver.sh` 和 `${ROCKETMQ_HOME}/bin/runbroker.sh` 文件内。适当调整内存分配和其他性能调优选项以适应服务器硬件条件[^3]。 #### 设置环境变量 为了简化命令执行路径,在 `.bashrc` 中添加如下内容以便全局访问 RocketMQ 脚本工具: ```bash echo 'export ROCKETMQ_HOME=/opt/rocketmq' >> ~/.bashrc echo 'export PATH=$PATH:$ROCKETMQ_HOME/bin' >> ~/.bashrc source ~/.bashrc ``` 这一步骤使得可以在任意位置运行 RocketMQ 提供的各种 shell 脚本而无需输入完整路径。 #### 编写 Service 文件 (可选) 对于希望将 RocketMQ 注册成系统服务的情况,可以按照官方文档指导编写 systemd service unit file 并放置于 `/etc/systemd/system/` 目录下。 #### 启动 Name Server 和 Broker 依次启动 NameServer 和 Broker 实例来初始化消息队列集群: ```bash nohup sh ${ROCKETMQ_HOME}/bin/mqnamesrv & sleep 3 nohup sh ${ROCKETMQ_HOME}/bin/mqbroker -n localhost:9876 auto_create_topic_enable=true & ``` 等待几秒钟让各组件完全启动之后即可开始发送测试消息[^4]: ```bash sh ${ROCKETMQ_HOME}/tools.sh org.apache.rocketmq.example.quickstart.Producer ``` 以上即是在 CentOS 7 上构建 RocketMQ 单节点实例的过程概述。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值