RocketMQ本地安装教程

这两天在安装RocketMQ时,发现官网上给的安装方案太简略了。。。安装完毕后服务根本无法启动,特出本教程记录一下,以备日后使用

安装及验证流程

  1. 下载 rocketmq 安装包,目前最新为 4.4.0 ,点击下载:rocketmq-all-4.4.0-bin-release.zip
  2. 解压压缩包: unzip rocketmq-all-4.4.0-bin.release.zip
  3. 进入bin文件夹下:cd ./``rocketmq-all-4.4.0-bin.release/bin
  4. 修改 runbroker.shrunserver.shtools.sh 文件,需要修改项如下:
# 前三项注释掉,然后添加一行,并配置上本地的jdk路径
#[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=$HOME/jdk/java
#[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/java
#[ ! -e "$JAVA_HOME/bin/java" ] && error_exit "Please set the JAVA_HOME variable in your environment, We need java(x64)!"
[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/home/chao/Softwares/JavaSoftwares/jdk1.8.0_211
# 本地测试环境需要将此处的值设小,默认的内存分配太大
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx2g -Xmn1g"
  1. 进入 conf 文件夹,创建 broker.properties 文件
  2. 编辑 broker.properties 文件,如下:
# broker默认集群名称
brokerClusterName = DefaultCluster
# broker名称,可随意配置
brokerName = broker-a
# brokerId值
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
# 配置为本机IP,若不配置,并且本机装有docker,broker地址会自动配置成docker的内网ip地址
brokerIP1=192.168.81.48
brokerIP2=192.168.81.48
# name服务器地址
namesrvAddr=192.168.81.48:9876
# 是否开启自动创建主题,若不开启,需要手动创建主题
autoCreateTopicEnable=true
  1. 启动Name服务器(建议在Linux服务器上安装screen,然后在screen中分别启动服务): ./bin/mqnamesrv 启动后日志打印如下:
The Name Server boot success. serializeType=JSON


8. 启动broker服务器: ./bin/mqbroker -f conf/borker.properties 启动后日志打印如下:

The broker[broker-a, 192.168.81.48:10911] boot success. serializeType=JSON and name server is 192.168.81.48:9876
  1. 先在本机进行测试:
测试Producer消息的发送
> export NAMESRV_ADDR=192.168.81.48:9876
> ./bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
SendResult [sendStatus=SEND_OK, msgId= ...

测试Consumer消息的接收
> ./bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
 ConsumeMessageThread_%d Receive New Messages: [MessageExt...
  1. 远程程序调用,若进行远程程序调用,请开放Linux服务器的9876、10911端口
  2. 本地新建项目,引入客户端依赖: compile 'org.apache.rocketmq:rocketmq-client:4.4.0'
  3. 创建生产者测试类: SyncProducer
public class SyncProducer {
    public static void main(String[] args) throws InterruptedException, MQClientException {

        DefaultMQProducer producer = new DefaultMQProducer("chaoGroup");
        //rocketmq默认3s超时,确认一切配置没问题,但是当进行消息发送的时候,还一直报路由找不到,或者调用超时,那么调大超时时间
        producer.setSendMsgTimeout(60000);
        producer.setNamesrvAddr("192.168.81.48:9876");

        producer.start();

        for (int i = 0; i < 1000; i++) {
            try {
                Message msg = new Message("TopicTest" /* Topic */,
                        "TagA" /* Tag */,
                        ("Hello RocketMQ " + i).getBytes(RemotingHelper.DEFAULT_CHARSET) /* Message body */
                );
                SendResult sendResult = producer.send(msg);

                System.out.printf("%s%n", sendResult);
            } catch (Exception e) {
                e.printStackTrace();
                Thread.sleep(1000);
            }
        }
        producer.shutdown();
    }
}
  1. 创建消费者测试类: Conusmer
public class Consumer {

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

        // Instantiate with specified consumer group name.
        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("conusmerGroup");
         
        // Specify name server addresses.
        consumer.setNamesrvAddr("192.168.81.48:9876");
        
        // Subscribe one more more topics to consume.
        consumer.subscribe("TopicTest", "*");
        // Register callback to execute on arrival of messages fetched from brokers.
        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;
            }
        });

        //Launch the consumer instance.
        consumer.start();

        System.out.printf("Consumer Started.%n");
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值