RocketMQ环境搭建
1 源码下载
wget http://mirror.bit.edu.cn/apache/rocketmq/4.2.0/rocketmq-all-4.2.0-bin-release.zip
unzip rocketmq-all-4.2.0-bin-release.zip
2 启动namesrv
cd /Users/rocketmq/bin
nohup sh mqnamesrv&
结果出错:
cat nohup.out
OpenJDK 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
java.net.BindException: Address already in use
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.Net.bind(Net.java:425)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:127)
at io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:501)
at io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1218)
at io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:506)
at io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:491)
at io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:965)
at io.netty.channel.AbstractChannel.bind(AbstractChannel.java:210)
at io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.java:353)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:408)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:455)
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:140)
at java.lang.Thread.run(Thread.java:852)
ERROR: Please set the JAVA_HOME variable in your environment, We need java(x64)! !!
ERROR: Please set the JAVA_HOME variable in your environment, We need java(x64)! !!
ERROR: Please set the JAVA_HOME variable in your environment, We need java(x64)! !!
ERROR: Please set the JAVA_HOME variable in your environment, We need java(x64)! !!
修改runserver.sh 和 runbroker.sh 文件,将 [ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/user/java 改为 [ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/opt/taobao/java
再执行命令,显示
The Name Server boot success. serializeType=JSON
说明namesrv成功了
3 启动broker
nohup sh mqbroker -n 11.162.141.67:9876&
看nohup.out报错
/Users/rocketmq/bin/runbroker.sh: line 62: 204749 Killed $JAVA ${JAVA_OPT} $@
说明脚本执行有问题,比较脚本runbroker.sh和runserver.sh,发现这两个文件的配置有不一样
#===========================================================================================
# JVM Configuration
#===========================================================================================
JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
JAVA_OPT="${JAVA_OPT} -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8 -XX:-UseParNewGC"
JAVA_OPT="${JAVA_OPT} -verbose:gc -Xloggc:/dev/shm/rmq_srv_gc.log -XX:+PrintGCDetails"
JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow"
JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages"
JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${JAVA_HOME}/jre/lib/ext:${BASE_DIR}/lib"
#JAVA_OPT="${JAVA_OPT} -Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n"
JAVA_OPT="${JAVA_OPT} ${JAVA_OPT_EXT}"
JAVA_OPT="${JAVA_OPT} -cp ${CLASSPATH}"
但是runserver.sh脚本能执行成功,于是将runserver.sh的配置替换runbroker.sh,再执行命令,成功了。
netstat -ano | grep "11.162.141.67:9876"
tcp 0 0 11.162.141.67:50772 11.162.141.67:9876 ESTABLISHED off (0.00/0/0)
tcp 0 0 11.162.141.67:9876 11.162.141.67:50772 ESTABLISHED off (0.00/0/0)
目前都是在一台机器上,既作为namesrv又作为broker。
4 消息生产
package org.apache.rocketmq.client.producer; import java.io.UnsupportedEncodingException;
import java.util.List; import org.apache.rocketmq.client.exception.MQBrokerException;
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.common.MixAll;
import org.apache.rocketmq.common.message.Message;
import org.apache.rocketmq.common.message.MessageQueue;
import org.apache.rocketmq.remoting.common.RemotingHelper;
import org.apache.rocketmq.remoting.exception.RemotingException; /**
* Created by test on 17/6/14.
*/
public class Producer {
public static void main(String[] args) throws UnsupportedEncodingException {
try {
System.setProperty(MixAll.NAMESRV_ADDR_PROPERTY, "11.162.141.67:9876");
MQProducer producer = new DefaultMQProducer("rocketmq-study"); producer.start(); String[] tags = new String[]{"TagA", "TagB", "TagC", "TagD", "TagE"}; for (int i = 0; i < 100; i++) { int orderId = i % 10;
Message msg =
new Message("TopicTestjjj", tags[i % tags.length], "KEY" + i,
("Hello RocketMQ " + i).getBytes(RemotingHelper.DEFAULT_CHARSET)); SendResult sendResult = producer.send(msg, new MessageQueueSelector() {
@Override
public MessageQueue select(List<MessageQueue> mqs, Message msg, Object arg) {
Integer id = (Integer) arg;
int index = id % mqs.size();
return mqs.get(index);
}
}, orderId); System.out.println(sendResult);
} producer.shutdown();
} catch (MQClientException e) {
e.printStackTrace();
} catch (RemotingException e) {
e.printStackTrace();
} catch (MQBrokerException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
执行结果:
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F5200000, offsetMsgId=0BA28D4300002A9F00000000000005F8, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=0], queueOffset=2]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F5640001, offsetMsgId=0BA28D4300002A9F00000000000006B7, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=1], queueOffset=2]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F5720002, offsetMsgId=0BA28D4300002A9F0000000000000776, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=2], queueOffset=2]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F5800003, offsetMsgId=0BA28D4300002A9F0000000000000835, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=3], queueOffset=2]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F58E0004, offsetMsgId=0BA28D4300002A9F00000000000008F4, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=0], queueOffset=3]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F59D0005, offsetMsgId=0BA28D4300002A9F00000000000009B3, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=1], queueOffset=3]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F5AB0006, offsetMsgId=0BA28D4300002A9F0000000000000A72, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=2], queueOffset=3]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F5B90007, offsetMsgId=0BA28D4300002A9F0000000000000B31, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=3], queueOffset=3]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F5C90008, offsetMsgId=0BA28D4300002A9F0000000000000BF0, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=0], queueOffset=4]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F5DA0009, offsetMsgId=0BA28D4300002A9F0000000000000CAF, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=1], queueOffset=4]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F5E8000A, offsetMsgId=0BA28D4300002A9F0000000000000D6E, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=0], queueOffset=5]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F5F7000B, offsetMsgId=0BA28D4300002A9F0000000000000E2F, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=1], queueOffset=5]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F606000C, offsetMsgId=0BA28D4300002A9F0000000000000EF0, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=2], queueOffset=4]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F614000D, offsetMsgId=0BA28D4300002A9F0000000000000FB1, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=3], queueOffset=4]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F627000E, offsetMsgId=0BA28D4300002A9F0000000000001072, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=0], queueOffset=6]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F635000F, offsetMsgId=0BA28D4300002A9F0000000000001133, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=1], queueOffset=6]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F6460010, offsetMsgId=0BA28D4300002A9F00000000000011F4, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=2], queueOffset=5]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F6570011, offsetMsgId=0BA28D4300002A9F00000000000012B5, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=3], queueOffset=5]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F6680012, offsetMsgId=0BA28D4300002A9F0000000000001376, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=0], queueOffset=7]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F6770013, offsetMsgId=0BA28D4300002A9F0000000000001437, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=1], queueOffset=7]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F6860014, offsetMsgId=0BA28D4300002A9F00000000000014F8, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=0], queueOffset=8]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F6940015, offsetMsgId=0BA28D4300002A9F00000000000015B9, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=1], queueOffset=8]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F6A20016, offsetMsgId=0BA28D4300002A9F000000000000167A, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=2], queueOffset=6]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F6B20017, offsetMsgId=0BA28D4300002A9F000000000000173B, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=3], queueOffset=6]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F6BF0018, offsetMsgId=0BA28D4300002A9F00000000000017FC, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=0], queueOffset=9]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F6CD0019, offsetMsgId=0BA28D4300002A9F00000000000018BD, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=1], queueOffset=9]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F6DB001A, offsetMsgId=0BA28D4300002A9F000000000000197E, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=2], queueOffset=7]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F6E9001B, offsetMsgId=0BA28D4300002A9F0000000000001A3F, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=3], queueOffset=7]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F6F7001C, offsetMsgId=0BA28D4300002A9F0000000000001B00, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=0], queueOffset=10]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F705001D, offsetMsgId=0BA28D4300002A9F0000000000001BC1, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=1], queueOffset=10]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F713001E, offsetMsgId=0BA28D4300002A9F0000000000001C82, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=0], queueOffset=11]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F722001F, offsetMsgId=0BA28D4300002A9F0000000000001D43, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=1], queueOffset=11]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F7310020, offsetMsgId=0BA28D4300002A9F0000000000001E04, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=2], queueOffset=8]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F73F0021, offsetMsgId=0BA28D4300002A9F0000000000001EC5, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=3], queueOffset=8]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F74E0022, offsetMsgId=0BA28D4300002A9F0000000000001F86, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=0], queueOffset=12]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F75B0023, offsetMsgId=0BA28D4300002A9F0000000000002047, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=1], queueOffset=12]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F7690024, offsetMsgId=0BA28D4300002A9F0000000000002108, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=2], queueOffset=9]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F7770025, offsetMsgId=0BA28D4300002A9F00000000000021C9, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=3], queueOffset=9]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F7850026, offsetMsgId=0BA28D4300002A9F000000000000228A, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=0], queueOffset=13]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F7940027, offsetMsgId=0BA28D4300002A9F000000000000234B, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=1], queueOffset=13]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F7A20028, offsetMsgId=0BA28D4300002A9F000000000000240C, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=0], queueOffset=14]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F7B00029, offsetMsgId=0BA28D4300002A9F00000000000024CD, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=1], queueOffset=14]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F7BD002A, offsetMsgId=0BA28D4300002A9F000000000000258E, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=2], queueOffset=10]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F7CD002B, offsetMsgId=0BA28D4300002A9F000000000000264F, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=3], queueOffset=10]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F7DB002C, offsetMsgId=0BA28D4300002A9F0000000000002710, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=0], queueOffset=15]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F7E9002D, offsetMsgId=0BA28D4300002A9F00000000000027D1, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=1], queueOffset=15]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F7F7002E, offsetMsgId=0BA28D4300002A9F0000000000002892, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=2], queueOffset=11]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F806002F, offsetMsgId=0BA28D4300002A9F0000000000002953, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=3], queueOffset=11]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F8140030, offsetMsgId=0BA28D4300002A9F0000000000002A14, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=0], queueOffset=16]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F8230031, offsetMsgId=0BA28D4300002A9F0000000000002AD5, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=1], queueOffset=16]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F8390032, offsetMsgId=0BA28D4300002A9F0000000000002B96, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=0], queueOffset=17]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F8480033, offsetMsgId=0BA28D4300002A9F0000000000002C57, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=1], queueOffset=17]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F8560034, offsetMsgId=0BA28D4300002A9F0000000000002D18, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=2], queueOffset=12]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F8640035, offsetMsgId=0BA28D4300002A9F0000000000002DD9, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=3], queueOffset=12]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F8720036, offsetMsgId=0BA28D4300002A9F0000000000002E9A, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=0], queueOffset=18]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F87F0037, offsetMsgId=0BA28D4300002A9F0000000000002F5B, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=1], queueOffset=18]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F88C0038, offsetMsgId=0BA28D4300002A9F000000000000301C, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=2], queueOffset=13]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F89C0039, offsetMsgId=0BA28D4300002A9F00000000000030DD, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=3], queueOffset=13]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F8A9003A, offsetMsgId=0BA28D4300002A9F000000000000319E, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=0], queueOffset=19]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F8B7003B, offsetMsgId=0BA28D4300002A9F000000000000325F, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=1], queueOffset=19]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F8C5003C, offsetMsgId=0BA28D4300002A9F0000000000003320, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=0], queueOffset=20]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F8D2003D, offsetMsgId=0BA28D4300002A9F00000000000033E1, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=1], queueOffset=20]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F8DF003E, offsetMsgId=0BA28D4300002A9F00000000000034A2, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=2], queueOffset=14]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F8EE003F, offsetMsgId=0BA28D4300002A9F0000000000003563, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=3], queueOffset=14]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F8FB0040, offsetMsgId=0BA28D4300002A9F0000000000003624, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=0], queueOffset=21]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F9090041, offsetMsgId=0BA28D4300002A9F00000000000036E5, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=1], queueOffset=21]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F9180042, offsetMsgId=0BA28D4300002A9F00000000000037A6, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=2], queueOffset=15]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F9260043, offsetMsgId=0BA28D4300002A9F0000000000003867, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=3], queueOffset=15]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F9340044, offsetMsgId=0BA28D4300002A9F0000000000003928, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=0], queueOffset=22]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F9420045, offsetMsgId=0BA28D4300002A9F00000000000039E9, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=1], queueOffset=22]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F94F0046, offsetMsgId=0BA28D4300002A9F0000000000003AAA, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=0], queueOffset=23]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F95D0047, offsetMsgId=0BA28D4300002A9F0000000000003B6B, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=1], queueOffset=23]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F96A0048, offsetMsgId=0BA28D4300002A9F0000000000003C2C, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=2], queueOffset=16]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F9770049, offsetMsgId=0BA28D4300002A9F0000000000003CED, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=3], queueOffset=16]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F985004A, offsetMsgId=0BA28D4300002A9F0000000000003DAE, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=0], queueOffset=24]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F993004B, offsetMsgId=0BA28D4300002A9F0000000000003E6F, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=1], queueOffset=24]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F9A1004C, offsetMsgId=0BA28D4300002A9F0000000000003F30, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=2], queueOffset=17]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F9AF004D, offsetMsgId=0BA28D4300002A9F0000000000003FF1, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=3], queueOffset=17]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F9BC004E, offsetMsgId=0BA28D4300002A9F00000000000040B2, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=0], queueOffset=25]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F9CB004F, offsetMsgId=0BA28D4300002A9F0000000000004173, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=1], queueOffset=25]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F9D80050, offsetMsgId=0BA28D4300002A9F0000000000004234, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=0], queueOffset=26]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F9E60051, offsetMsgId=0BA28D4300002A9F00000000000042F5, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=1], queueOffset=26]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70F9F50052, offsetMsgId=0BA28D4300002A9F00000000000043B6, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=2], queueOffset=18]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70FA050053, offsetMsgId=0BA28D4300002A9F0000000000004477, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=3], queueOffset=18]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70FA130054, offsetMsgId=0BA28D4300002A9F0000000000004538, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=0], queueOffset=27]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70FA200055, offsetMsgId=0BA28D4300002A9F00000000000045F9, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=1], queueOffset=27]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70FA2E0056, offsetMsgId=0BA28D4300002A9F00000000000046BA, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=2], queueOffset=19]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70FA3B0057, offsetMsgId=0BA28D4300002A9F000000000000477B, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=3], queueOffset=19]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70FA480058, offsetMsgId=0BA28D4300002A9F000000000000483C, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=0], queueOffset=28]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70FA570059, offsetMsgId=0BA28D4300002A9F00000000000048FD, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=1], queueOffset=28]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70FA65005A, offsetMsgId=0BA28D4300002A9F00000000000049BE, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=0], queueOffset=29]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70FA77005B, offsetMsgId=0BA28D4300002A9F0000000000004A7F, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=1], queueOffset=29]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70FA8D005C, offsetMsgId=0BA28D4300002A9F0000000000004B40, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=2], queueOffset=20]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70FAAA005D, offsetMsgId=0BA28D4300002A9F0000000000004C01, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=3], queueOffset=20]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70FABE005E, offsetMsgId=0BA28D4300002A9F0000000000004CC2, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=0], queueOffset=30]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70FACD005F, offsetMsgId=0BA28D4300002A9F0000000000004D83, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=1], queueOffset=30]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70FAE00060, offsetMsgId=0BA28D4300002A9F0000000000004E44, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=2], queueOffset=21]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70FAF20061, offsetMsgId=0BA28D4300002A9F0000000000004F05, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=3], queueOffset=21]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70FB010062, offsetMsgId=0BA28D4300002A9F0000000000004FC6, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=0], queueOffset=31]
SendResult [sendStatus=SEND_OK, msgId=1E065BDA6AEB3764951D2E70FB140063, offsetMsgId=0BA28D4300002A9F0000000000005087, messageQueue=MessageQueue [topic=TopicTestjjj, brokerName=taobaodaily011162141067.et15sqa, queueId=1], queueOffset=31]
ConsumeQueue的存储位置
默认的存储位置:${user.home} \store\consumequeue${topicName}${queueId}${fileName}
可以修改:配置文件的
storePathRootDir=/home/haieradmin/mqstore/rocketmqstore
storePathCommitLog=/home/haieradmin/mqstore/rocketmqstore/commitlog
这两个参数。
登录机器,看/home/users/store目录
abort checkpoint commitlog config consumequeue index lock nohup.out
目录树
├── commitlog
│ └── 00000000000000000000
│ └── 00000000001073741824
├── consumequeue
│ ├── TopicTestjjj
│ │ ├── 0
│ │ │ └── 00000000000000000000
│ │ ├── 1
│ │ │ └── 00000000000000000000
│ │ ├── 2
│ │ │ └── 00000000000000000000
│ │ └── 3
│ │ └── 00000000000000000000
可以看到commitLog下面刚好两个1G的文件,分别以偏移量作为文件名。
看一下文件内容:
$strings 00000000000000000000
Hello RocketMQ 0
TopicTestjjj
HKEYS
KEY0
UNIQ_KEY
1E065BDA6AB118B4AAC22BAB0AEA0000
WAIT
true
TAGS
TagA
Hello RocketMQ 1
TopicTestjjj
HKEYS
KEY1
UNIQ_KEY
1E065BDA6AB118B4AAC22BAB2F800001
WAIT
true
TAGS
TagB
Hello RocketMQ 2
TopicTestjjj
HKEYS
KEY2
UNIQ_KEY
1E065BDA6AB118B4AAC22BAB2F8E0002
WAIT
true
TAGS
TagC
Hello RocketMQ 3
TopicTestjjj
HKEYS
KEY3
UNIQ_KEY
顺便说一下,消息队列文件名规则:
文件默认存储大小1G。
文件名以已有存储容量依次递增,类似如下:
00000000000000000000
00000000001073741824
00000000002147483648
。。。
这是个二进制文件,打开看一下。
$od -Ax -tx1 00000000000000000000
000000 00 00 00 00 00 00 00 00 00 00 00 bf 00 00 00 00
000010 00 27 a8 07 00 00 00 00 00 00 02 fc 00 00 00 bf
000020 00 00 00 00 00 27 a8 0b 00 00 00 00 00 00 05 f8
000030 00 00 00 bf 00 00 00 00 00 27 a8 07 00 00 00 00
000040 00 00 08 f4 00 00 00 bf 00 00 00 00 00 27 a8 0b
000050 00 00 00 00 00 00 0b f0 00 00 00 bf 00 00 00 00
000060 00 27 a8 0a 00 00 00 00 00 00 0d 6e 00 00 00 c1
000070 00 00 00 00 00 27 a8 07 00 00 00 00 00 00 10 72
000080 00 00 00 c1 00 00 00 00 00 27 a8 0b 00 00 00 00
000090 00 00 13 76 00 00 00 c1 00 00 00 00 00 27 a8 0a
0000a0 00 00 00 00 00 00 14 f8 00 00 00 c1 00 00 00 00
0000b0 00 27 a8 07 00 00 00 00 00 00 17 fc 00 00 00 c1
0000c0 00 00 00 00 00 27 a8 0b 00 00 00 00 00 00 1b 00
0000d0 00 00 00 c1 00 00 00 00 00 27 a8 0a 00 00 00 00
0000e0 00 00 1c 82 00 00 00 c1 00 00 00 00 00 27 a8 07
0000f0 00 00 00 00 00 00 1f 86 00 00 00 c1 00 00 00 00
000100 00 27 a8 0b 00 00 00 00 00 00 22 8a 00 00 00 c1
000110 00 00 00 00 00 27 a8 0a 00 00 00 00 00 00 24 0c
000120 00 00 00 c1 00 00 00 00 00 27 a8 07 00 00 00 00
000130 00 00 27 10 00 00 00 c1 00 00 00 00 00 27 a8 0b
000140 00 00 00 00 00 00 2a 14 00 00 00 c1 00 00 00 00
000150 00 27 a8 0a 00 00 00 00 00 00 2b 96 00 00 00 c1
000160 00 00 00 00 00 27 a8 07 00 00 00 00 00 00 2e 9a
000170 00 00 00 c1 00 00 00 00 00 27 a8 0b 00 00 00 00
000180 00 00 31 9e 00 00 00 c1 00 00 00 00 00 27 a8 0a
000190 00 00 00 00 00 00 33 20 00 00 00 c1 00 00 00 00
0001a0 00 27 a8 07 00 00 00 00 00 00 36 24 00 00 00 c1
0001b0 00 00 00 00 00 27 a8 0b 00 00 00 00 00 00 39 28
0001c0 00 00 00 c1 00 00 00 00 00 27 a8 0a 00 00 00 00
0001d0 00 00 3a aa 00 00 00 c1 00 00 00 00 00 27 a8 07
0001e0 00 00 00 00 00 00 3d ae 00 00 00 c1 00 00 00 00
0001f0 00 27 a8 0b 00 00 00 00 00 00 40 b2 00 00 00 c1
000200 00 00 00 00 00 27 a8 0a 00 00 00 00 00 00 42 34
000210 00 00 00 c1 00 00 00 00 00 27 a8 07 00 00 00 00
000220 00 00 45 38 00 00 00 c1 00 00 00 00 00 27 a8 0b
000230 00 00 00 00 00 00 48 3c 00 00 00 c1 00 00 00 00
000240 00 27 a8 0a 00 00 00 00 00 00 49 be 00 00 00 c1
000250 00 00 00 00 00 27 a8 07 00 00 00 00 00 00 4c c2
000260 00 00 00 c1 00 00 00 00 00 27 a8 0b 00 00 00 00
000270 00 00 4f c6 00 00 00 c1 00 00 00 00 00 27 a8 0a
000280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
5b8d80

ConsumeQueue中每个消息时20Byte长。结构为

困,明天继续。
RocketMQ环境搭建的更多相关文章
- RocketMQ环境搭建(双master双slave模式)
1.环境准备: 准备四台主机(我这里用CentOSx64) 主机 角色 broker 192.168.192.130 Master1 BrokerServerA 192.168.192.131 Mas ...
- RocketMQ环境搭建(双master模式)
介绍: 多Master模式,一个集群无Slave,全是Master,例如2个Master或者3个Master. 优点:配置简单,单个Master宕机或重启维护对应用无影响,在磁盘配置为RAID10时, ...
- rocketmq 集群环境搭建配置
rocketmq环境搭建配置: 一. 搭建三主集群,环境:centos-64 7.4 + RocketMQ-4.3.2 Master01: 192.168.102.68 Master02: 192 ...
- RocketMQ在Windows平台下环境搭建
一. 环境搭建 需要jdk1.6(以上) 64bit, maven, eclipse 二. RocketMQ项目下载 项目地址:https://github.com/alibaba/RocketM ...
- RocketMQ在linux平台下环境搭建
RocketMQ在linux下部署运行和window类似,只不过启动namesrv和broker是通过mqnamesrv.sh 和 mqbroker.sh来启动的. 一. 环境搭建 需要jdk1.6 ...
- rocketmq那些事儿之本地调试环境搭建
上一篇文章中我们已经介绍过rocketmq的集群环境搭建,然而在源码的学习中我们还需要进行本地的调试和问题的定位查找,毕竟还是在本地方便些,今天就说一说如何进行源码的本地调试 下载编译 对于rocke ...
- RocketMQ系列(二)环境搭建
RocketMQ的基本概念在上一篇中给大家介绍了,这一节将给大家介绍环境搭建.RocketMQ中最基础的就是NameServer,我们先来看看它是怎么搭建的. NameServer RocketMQ要 ...
- RocketMQ(1)---架构原理及环境搭建
一.架构简述 RocketMQ阿里开源的一个分布式消息传递和流媒体平台,具有低延迟,高性能和可靠性, 万亿级容量和灵活的可伸缩性.跟其它中间件相比,RocketMQ的特点是纯JAVA实现,在发生宕机和 ...
- Netty环境搭建 (源码死磕2)
[正文]netty源码 死磕2: 环境搭建 本小节目录 1. Netty为什么火得屌炸天? 1.1. Netty是什么? 1.2. Netty火到什么程度呢? 1.3. Netty为什么这么火? 2 ...
随机推荐
- 【读书笔记】iOS-手势识别
一,事件处理机制 事件是当用户手指触及屏幕,或地屏幕上滑动,或摇晃设备等时候,系统不断地把这些事件通过消息发送给应用程序对象.在iOS设备中能够捕获的事件有3种:触摸事件,移动事件和多媒体远程控制事件 ...
- GDAL中GDALDataType中值与其在C++中数据类型对应
GDAL中的GDALDataType是一个枚举型,其中的值为: GDT_Unknown : 未知数据类型 GDT_Byte : 8bit正整型 (C++中对应unsigned char) GDT_UI ...
- 测试思想-集成测试 关于接口测试 Part 2
关于接口测试 by:授客 QQ:1033553122 ------------------接Part 1---------------------- 5. 用例设计思想(举例说明) 如上表,是某 ...
- 安卓开发_浅谈Fragment之ListFragment
ListFragment,即Fragment的一个子类,当我们用的一个Fragment只需要一个listview视图的时候使用 该类有几个特点: 1.ListFragment 本身具只有一个ListV ...
- loadrunner11中文版破解文档+录制脚本(图/文)
下面是整理后的loadrunner11破解版的所有文件及操作步骤. LoadRunner11安装 1.Loadrunner11下载链接:https://pan.baidu.com/s/15Svt3kt ...
- JavaScript大杂烩16 - 推荐实践
JavaScript部分 1. 总是使用===来进行相等判断 原因:由于 == 和 != 操作符存在类型转换问题,而为了保持代码中数据类型的完整性,推荐使用全等 === 和不全等 !=== 操作符. ...
- C#中禁止跨线程直接访问控件
C#中禁止跨线程直接访问控件,InvokeRequired是为了解决这个问题而产生的,当一个控件的InvokeRequired属性值为真时,说明有一个创建它以外的线程想访问它.此时它将会在内部调用ne ...
- [20171120]bash使用here documents的一个小细节.txt
[20171120]bash使用here documents的一个小细节.txt --//昨天看bash文档,,发现一些小细节,做一个记录,就是EOF加引号的问题. command <<' ...
- 性能测试—认识JMeter(三)
<零成本web性能测试>第二章 JMeter基础知识总结和自己的理解 一.JMeter百度词条概念 Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件 ...
- python第六十八天--第十二周作业
主题: 需求: 用户角色,讲师\学员, 用户登陆后根据角色不同,能做的事情不同,分别如下讲师视图 管理班级,可创建班级,根据学员qq号把学员加入班级 可创建指定班级的上课纪录,注意一节上课纪录对应多条 ...