ali(apache)的RocketMQ下载安装

去github上直接搜索RocketMQ,搜索结果出现apache/rocketmq 进去其中进行下载 ali将其捐献给了apache,进入一下的网址  安装步骤操作   本人现在的时源码自己编译的的

  • Docs: https://rocketmq.apache.org/docs/quick-start/


Start Name Server

  > nohup sh bin/mqnamesrv &
  > tail -f ~/logs/rocketmqlogs/namesrv.log
  The Name Server boot success...

Start Broker

  > nohup sh bin/mqbroker -n localhost:9876 &
  > tail -f ~/logs/rocketmqlogs/broker.log 
  The broker[%s, 172.30.30.233:10911] boot success...
启动过程如果有异常 异常信息会输出到 ~(安装目录)/rocketmq-all-4.2.0/distribution/target/apache-rocketmq/nohup.out 或者

~/rocketmq-all-4.2.0/distribution/target/apache-rocketmq/bin/nohup.out



在启动mqbroker时出现此情况说明内存不足 需要修改配置后再启动

Java HotSpot(TM) 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
The Name Server boot success. serializeType=JSON
Java HotSpot(TM) 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
The Name Server boot success. serializeType=JSON
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000005c0000000, 8589934592, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 8589934592 bytes for committing reserved memory.

# An error report file with more information is saved as:


修改方式如下

如果服务器内存不够,可以修改runbroker.sh脚本(mqbroker文件中通过runbroker.sh脚本调用Broker的主函数com.alibaba.rocketmq.broker.BrokerStartup启动Broker)的JAVA_OPT_1参数

~/rocketmq-all-4.2.0/distribution/target/apache-rocketmq/bin/runbroker.sh将其中的参数

JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g" 修改  根据实际情况修改 参数值


启动完成后使用jps查看  会有NamesrvStartup和BrokerStartup出现  启动成功


使用java测试消息发送

package test.data.com.roeckMQ;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
import org.apache.rocketmq.common.consumer.ConsumeFromWhere;
import org.apache.rocketmq.common.message.Message;
import org.apache.rocketmq.common.message.MessageExt;

import java.util.List;

/**
 * @param
 * @param
 * @param
 * @author HUAZAI
 * @title:
 * @description:
 * @return 返回类型 :
 * 
    *
  • *
  • *
      * @throws * @date 18-5-3 下午6:45 */ public class Consumer { private static final Logger logger = LogManager.getLogger(Consumer.class);//log4j2 日志 public static void main(String[] args){ Boolean isloadconfig = Boolean.parseBoolean(System.getProperty("rocketmq.client.log.loadconfig", "true")); System.setProperty("rocketmq.client.log.loadconfig","false");//设置rocketMQ是否使用自己的日志配置 false不使用 默认为true使用 System.out.println(isloadconfig); DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("PushConsumer"); consumer.setNamesrvAddr("192.168.2.82:9876");//设置监听的地址 try { //订阅PushTopicTagpush的消息 consumer.subscribe("PushTopic", "push"); //程序第一次启动从消息队列头取数据 consumer.setConsumeFromWhere( ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET); consumer.registerMessageListener( new MessageListenerConcurrently() { public ConsumeConcurrentlyStatus consumeMessage( List list, ConsumeConcurrentlyContext Context) { Message msg = list.get(0); logger.info(msg.toString()); return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; } } ); consumer.start(); } catch (Exception e) { e.printStackTrace(); } } }
package test.data.com.roeckMQ;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;

/**
 * @param
 * @param
 * @param
 * @author HUAZAI
 * @title:
 * @description:
 * @return 返回类型 :
 * 
    *
  • *
  • *
      * @throws * @date 18-5-3 下午6:37 */ public class Producer { private static final Logger logger = LogManager.getLogger(Producer.class); public static void main(String[] args){ Boolean isloadconfig = Boolean.parseBoolean(System.getProperty("rocketmq.client.log.loadconfig", "true")); System.setProperty("rocketmq.client.log.loadconfig","false"); System.out.println(isloadconfig); DefaultMQProducer producer = new DefaultMQProducer("Producer"); producer.setNamesrvAddr("192.168.2.82:9876"); try { producer.start(); Message msg = new Message("PushTopic", "push", "1", "Just for test.".getBytes()); SendResult result = producer.send(msg); logger.info("id:" + result.getMsgId() + " result:" + result.getSendStatus()); msg = new Message("PushTopic", "push", "2", "Just for test.".getBytes()); result = producer.send(msg); logger.info("id:" + result.getMsgId() + " result:" + result.getSendStatus()); msg = new Message("PullTopic", "pull", "1", "Just for test.".getBytes()); result = producer.send(msg); logger.info("id:" + result.getMsgId() + " result:" + result.getSendStatus()); } catch (Exception e) { e.printStackTrace(); }finally{ producer.shutdown(); } } }

其中的rocketMQ自己的日志

rocketmq客户端会打印一些日志如消费进度,心跳等,默认的是滚动10个日志文件,每个100MB,又一次看到这个日志目录有几十GB,手动删除,但是悲剧的是rocketmq没有释放这个日志目录,导致不能真正的释放磁盘空间。


于是研究了下怎么配置rocketmq客户端日志配置。

客户端日志配置ClientLogger这个类里,支持log4j和logback两种日志,默认是从缺省的日志文件加载,rocketmq-client这个工程的类目下有两个日志配置文件。

首先禁用掉rocektmq自己加载日志文件,有一个isloadconfig属性默认为true,可以在自己代码设置为false

Boolean isloadconfig =              Boolean.parseBoolean(System.getProperty("rocketmq.client.log.loadconfig""true"));

停止服务 

Shutdown Servers

> sh bin/mqshutdown broker
The mqbroker(36695) is running...
Send shutdown request to mqbroker(36695) OK

> sh bin/mqshutdown namesrv
The mqnamesrv(36664) is running...
Send shutdown request to mqnamesrv(36664) OK

参考

https://blog.csdn.net/wyfk2013/article/details/78218221

https://blog.csdn.net/a19881029/article/details/34446629

你可能感兴趣的:(RocketMQ使用)