rocketmq的单机版的安装部署以及简单的hell word
来源:互联网 发布:淘宝网怎么刷单挣钱 编辑:程序博客网 时间:2024/05/22 00:25
由于最近公司需要承接全国的单点问题,在用rocket来处理分布式事务问题。采用的是阿里的rocketmq消息对列。
rocketmq安装:
下载编译好的rocketmq包,
wget https://github.com/alibaba/RocketMQ/releases/download/v3.2.6/alibaba-rocketmq-3.2.6.tar.gz
http://download.csdn.net/download/qq_38665235/9999088
解压
tar -zxvf alibaba-rocketmq-3.2.6.tar.gz
移动
mv alibaba-rocketmq-3.2.6 /usr/local/rocketmq
配置环境变量
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
JRE_HOME=$JAVA_HOME/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
M2_HOME=/usr/maven/
ROCKETMQ_HOME=/usr/rocketmq
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$M2_HOME/bin:$ROCKETMQ_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH M2_HOME ROCKETMQ_HOME PATH
export NAMESRV_ADDR=127.0.0.1:9876
修改runservice.sh和runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m -XX:PermSize=128m -XX:MaxPermSize=320m"
启动nameserver
nohup sh mqnamesrv &
如果报错如下
java.lang.ExceptionInInitializerError
at com.alibaba.rocketmq.namesrv.NamesrvStartup.main0(NamesrvStartup.java:125)
at com.alibaba.rocketmq.namesrv.NamesrvStartup.main(NamesrvStartup.java:70)
Caused by: java.lang.RuntimeException: InetAddress java.net.InetAddress.getLocalHost() throws UnknownHostException
See https://github.com/alibaba/RocketMQ/issues/64 for further details.
at com.alibaba.rocketmq.common.MixAll.localhost(MixAll.java:458)
at com.alibaba.rocketmq.common.MixAll.<clinit>(MixAll.java:82)
... 2 more
Caused by: java.net.UnknownHostException: bogon: bogon: Name or service not known
at java.net.InetAddress.getLocalHost(InetAddress.java:1505)
at com.alibaba.rocketmq.common.MixAll.localhost(MixAll.java:454)
... 3 more
Caused by: java.net.UnknownHostException: bogon: Name or service not known
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323)
at java.net.InetAddress.getLocalHost(InetAddress.java:1500)
说明此时绑定的主机名和hosts文件里面的不一致,查看主机名称 $ hostname
修改/etc/hosts文件中的主机名称和/etc/sysconfig/network中的主机名称
查看是否启动正常
ps aux|grep java
正常如下:
启动broker,创建文件夹
mkdir ../conf/me-2m-2s-async/
sh mqbroker -m >../conf/me-2m-2s-async/broker.p
打开broker.p吧brokerIP1制定为主机ip(虚拟机的对外ip)
启动broker
nohup sh mqbroker -n 192.168.73.129:9876 autoCreateTopicEnable=true -c ../conf/me-2m-2s-async/broker.p &
开放端口:
/sbin/iptables -I INPUT -p tcp --dport 9876 -j ACCEPT
保存设置:
/etc/rc.d/init.d/iptables save
下载rocketmq-console控制台项目
wget https://github.com/duomu/rocketmq-console/raw/master/rocketmq-console.war 下载
将下载好的war包放在tomcat的webapp文件夹下 启动tomcat即可访问控制台
pom依赖:
<dependency> <groupId>com.alibaba.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> <version>3.2.6</version> </dependency>
生产者:
public class MqProducer { public static void main(String[] args) throws UnsupportedEncodingException { DefaultMQProducer producer= new DefaultMQProducer("producer"); producer.setNamesrvAddr("192.168.73.129:9876"); try { producer.start(); System.out.print("生产者启动成功"); //创建消息 for(int i=0;i<50;i++) { Message msg = new Message("PushTopic", "push", "1", ("Hello world"+i).getBytes()); //发送消息 SendResult send = producer.send(msg); String str=new String(msg.getBody(),("utf-8")); System.out.println(str); } } catch (MQClientException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } catch (RemotingException e) { e.printStackTrace(); } catch (MQBrokerException e) { e.printStackTrace(); }finally { //关闭生产者 producer.shutdown(); } }}
消费者:
public class Consumer { public static void main(String[] args){ DefaultMQPushConsumer consumer=new DefaultMQPushConsumer("PushConsumer");//这里的PushConsumer必须全局唯一 consumer.setNamesrvAddr("192.168.73.129:9876"); try { consumer.subscribe("PushTopic","*"); //程序第一次启动从消息队列头取数据 consumer.setConsumeFromWhere( ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET); consumer.registerMessageListener( new MessageListenerConcurrently() { public ConsumeConcurrentlyStatus consumeMessage( List<MessageExt> list, ConsumeConcurrentlyContext Context) { try { for(Message message:list){ String msgbody=new String(message.getBody(),("utf-8")); String topic=message.getTopic(); System.out.println("收到消息"+"topic"+topic+"消息内容"+msgbody); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); MessageExt ext=list.get(0); if(ext.getReconsumeTimes()==2){ System.out.println("重试结束"); return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; } } return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; } } ); consumer.start(); } catch (MQClientException e) { e.printStackTrace(); } }}他自己有重试机制,强烈建议先启动消费者再去启动生产者。但是想批量消费,就先启动生产者在启动消费者。
转载请注明出处!!!!
阅读全文
4 3
- rocketmq的单机版的安装部署以及简单的hell word
- redis单机版的安装部署以及java实现
- linux 环境下rocketMq的安装(单机) 以及所碰到的问题
- 消息中间件RocketMQ的安装与部署
- RocketMQ的集群部署
- Tachyon的单机部署以及操作等
- redis的安装部署(单机)
- RocketMQ的简单使用
- Centos7 RocketMQ单机部署
- 简单的goldengate单机安装和测试
- DLL Hell的解决方案
- 著名的DLL Hell
- dll hell的理解
- DLL Hell的解决方案
- rocketmq消息的简单示例
- zookeeper单机部署的配置及简单健康检查
- MongoDB——安装部署以及简单的运用
- 淘宝消息中间件RocketMQ的安装和简单使用
- Java 基本语法----进制、运算符
- Linux环境下MySQL-python安装过程
- 用Jquery控制文本框只能输入数字和字母
- Java 基本语法----流程控制
- 移动APP崩溃测试用例设计
- rocketmq的单机版的安装部署以及简单的hell word
- 自然语言处理-Word2Vec
- Java 基本语法----数组
- 计算机视觉、机器学习相关领域论文和源代码大集合(转)
- 面向对象----类和对象
- 面向对象----信息的封装和隐藏
- 面向对象----构造方法、this 关键字、函数的参数传递、package语句/import语句
- 面向对象----方法的重载
- 数据库