1.下載jdk並安裝
sudo tar xvzf jdk-7u65-linux-x64.gz -C /usr/local
cd /usr/local
ln -s jdk1.8.0_65/ jdk
cd bin
sudo ln -s /usr/local/jdk/bin/java
2.下載RocketMQ並安裝
官網下不下來
備用下載地址:http://download.csdn.net/detail/wtwshui/9194133#comment
sudo tar -zxvf alibaba-rocketmq-3.2.6.tar.gz -C /usr/local
cd /usr/local
sudo ln -s alibaba-rocketmq rocketmq
3.設置環境變量
export PATH=$PATH:/usr/local/bin
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
export ROCKETMQ_HOME=/usr/local/rocketmq
export PATH=$PATH::$ROCKETMQ_HOME/bin
cd /usr/local/rocketmq/bin
sudo sh os.sh
4.開啓服務
nohup sh mqnamesrv &
nohup sh mqbroker -n "127.0.0.1:9876" &
5.驗證
完成上述步驟後,如果出現了錯誤,請試着修改runserver.sh和runbroker.sh這二個文件中的jvm配置選項,具體的jvm的含義如下:
JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:PermSize=128m -XX:MaxPermSize=320m"
-Xmx:設置JVM最大可用內存爲Xmx M。
-Xms:設置JVM促使內存爲Xms m。此值可以設置與-Xmx相同,以避免每次垃圾回收完成後JVM重新分配內存。
-Xmn:設置年輕代大小。整個JVM內存大小=年輕代大小 + 年老代大小 + 持久代大小。持久代一般固定大小爲64m,所以增大年輕代後,將會減小年老代大小。此值對系統性能影響較大,Sun官方推薦配置爲整個堆的3/8。
-Xss:設置每個線程的堆棧大小。JDK5.0以後每個線程堆棧大小爲1M,以前每個線程堆棧大小爲256K。更具應用的線程所需內存大小進行調整。在相同物理內存下,減小這個值能生成更多的線程。但是操作系統對一個進程內的線程數還是有限制的,不能無限生成,經驗值在3000~5000左右。
-XX:MaxPermSize:設置持久代大小。
使用jps命令列出所有的java進程
如果出現三個進程則表示安裝配置的成功
6.編寫代碼
消費者:
public class Consumer {
public static void main(String[] args) throws InterruptedException, MQClientException {
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("QuickStartConsumer");
consumer.setNamesrvAddr("127.0.0.1:9876");
consumer.setInstanceName("QuickStartConsumer");
consumer.subscribe("QuickStart", "*");
consumer.registerMessageListener(new MessageListenerConcurrently() {
@Override
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs,
ConsumeConcurrentlyContext context) {
System.out.println(Thread.currentThread().getName() + " Receive New Messages: " + msgs);
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
}
});
consumer.start();
System.out.println("Consumer Started.");
}
}
生產者:
public class Producer {
public static void main(String[] args) throws MQClientException, InterruptedException {
DefaultMQProducer producer = new DefaultMQProducer("QuickStartProducer");
producer.setNamesrvAddr("127.0.0.1:9876");
producer.setInstanceName("QuickStartProducer");
producer.start();
for (int i = 0; i < 1000; i++) {
try {
Message msg = new Message("QuickStart",// topic
"TagA",// tag
("Hello RocketMQ ,QuickStart" + i).getBytes()// body
);
SendResult sendResult = producer.send(msg);
System.out.println(sendResult);
}
catch (Exception e) {
e.printStackTrace();
Thread.sleep(1000);
}
}
producer.shutdown();
}
}
如果運行上述的程序出現異常,請看看第五步是不是有問題,如果沒有的話,使用下面命令關閉防火牆
sudo ufw disable
7.運行結果
8.參考網站:http://sofar.blog.51cto.com/353572/1540874
http://www.uml.org.cn/zjjs/201504021.asp