【rocketMQ】1、搭建MQ服务器,生产一个订单与消费一个订单
1、 先解压

2、 maven编译安装、(注意虚拟机采用nat网络模式,需要联网)
mvn -Prelease-all -DskipTests clean install -U




启动nameser节点

启动broker

nohup sh bin/mqbroker -n localhost:9876 & tail -f namesrv.log
出错,

修改内存配置


修改为

修改broken


这里我吃了大亏,主机对虚拟机中的端口访问不通!!!
注意一定要关闭防火墙,或者开启9876等需要使用的端口,不然无法远程调用!
再次启动
nohup bin/mqnamesrv > namesrv.log 2>&1 & tail -f namesrv.log

nohup bin/mqbroker -n 127.0.0.1:9876 > broker.log 2>&1 & tail -f broker.log

、、测试案例
这个是官网的,其实这个无所谓,等会使用代码远程发送订单
> export NAMESRV_ADDR=localhost:9876
> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
停止服务,这个也无所谓,实在不行直接 kill -9 pid 吧进程杀死也是可以的

来,开始发送第一单!!!
package tttt.mq; import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;
import org.apache.rocketmq.remoting.common.RemotingHelper;
import org.junit.Test; public class MqProductTest { @Test
public void test1() {
DefaultMQProducer producer = new DefaultMQProducer("xiaof_test");
producer.setNamesrvAddr("192.168.0.128:9876");
try {
producer.start();
for (int i = 0; i < 2; i++)
try {
{
Message msg = new Message("Topic1", "TagA", "OrderID188",
"Hello world".getBytes(RemotingHelper.DEFAULT_CHARSET));
// SendResult sendResult = producer.send(msg);
// System.out.printf("%s%n", sendResult); producer.sendOneway(msg); }
} catch (Exception e) {
e.printStackTrace();
} } catch (MQClientException e) {
e.printStackTrace();
} finally {
producer.shutdown();
}
} }
解压来,我们消费掉这个
package tttt.mq; import java.util.List;
import java.util.concurrent.atomic.AtomicLong; import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
import org.apache.rocketmq.client.consumer.listener.ConsumeOrderlyContext;
import org.apache.rocketmq.client.consumer.listener.ConsumeOrderlyStatus;
import org.apache.rocketmq.client.consumer.listener.MessageListenerOrderly;
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.common.consumer.ConsumeFromWhere;
import org.apache.rocketmq.common.message.MessageExt;
import org.junit.Test; public class MqConsumeTest { @Test
public void test1() {
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("xiaof_test");
consumer.setNamesrvAddr("192.168.0.128:9876"); consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET); try {
consumer.subscribe("Topic1", "TagA"); consumer.registerMessageListener(new MessageListenerOrderly() { AtomicLong consumeTimes = new AtomicLong(0); @Override
public ConsumeOrderlyStatus consumeMessage(List<MessageExt> msgs, ConsumeOrderlyContext context) { //这个要是false,服务器就会不断重复发送消息
context.setAutoCommit(true);
MessageExt msg = msgs.get(0);
String data = new String(msg.getBody()); System.out.printf("%s 消费信息线程与数据: %s %n", Thread.currentThread().getName(), data); this.consumeTimes.incrementAndGet();
if ((this.consumeTimes.get() % 2) == 0) {
return ConsumeOrderlyStatus.SUCCESS;
} else if ((this.consumeTimes.get() % 3) == 0) {
return ConsumeOrderlyStatus.ROLLBACK;
} else if ((this.consumeTimes.get() % 4) == 0) {
return ConsumeOrderlyStatus.COMMIT;
} else if ((this.consumeTimes.get() % 5) == 0) {
context.setSuspendCurrentQueueTimeMillis(3000);
return ConsumeOrderlyStatus.SUSPEND_CURRENT_QUEUE_A_MOMENT;
}
return ConsumeOrderlyStatus.SUCCESS; }
}); consumer.start(); System.out.printf("Consumer Started.%n"); } catch (MQClientException e) {
e.printStackTrace();
}
}
}
来一发效果:






这个是消费msg中的全部信息:

【rocketMQ】1、搭建MQ服务器,生产一个订单与消费一个订单的更多相关文章
- 搭建Minisipserve服务器实现局域网内IOS客户端idoubs的通信
idoubs是IOS设备开发的第一款全功能并开放源码的3GPP IMS客户端,它同时专为IOS平台开发设计的voIP测试版客户端,以doubango为框架,能实现当前最先进的多媒体功能,主要功能有:语 ...
- 搭建邮件服务器,使用Postfix与Dovecot收发电子邮件
小知识: 我们为什么要搭建邮件服务器呢?有时候我们处于一个局域网内,不能及时的分享各自的研究成果,迫切的需要一种能够借助于网络且建立在计算机之间的传输数据的方法.所以我们需要搭建邮件服务器,这样的话既 ...
- 在本机使用虚拟机安装一个linux系统,并搭建ftp服务器
一.Linux基础使用:linux服务器环境搭建(FTP服务器), 在本机使用虚拟机安装一个linux系统,并搭建ftp服务器,要求能使用ftp服务将本机文件到保存linux虚拟机上 资料: VMwa ...
- RocketMQ一个新的消费组初次启动时从何处开始消费呢?
目录 1.抛出问题 1.1 环境准备 1.2 消息发送者代码 1.3 消费端验证代码 2.探究CONSUME_FROM_MAX_OFFSET实现原理 2.1 CONSUME_FROM_LAST_OFF ...
- 自己家里搭建NAS服务器有什么好方案?
转自:https://www.zhihu.com/question/21359049 作者:陈二发链接:https://www.zhihu.com/question/21359049/answer/6 ...
- 关于《rsyslog+mysql+loganalyzer搭建日志服务器<个人笔记>》的反思
关于<rsyslog+mysql+loganalyzer搭建日志服务器<个人笔记>>的反思--链接--http://www.cnblogs.com/drgcaosheng/p/ ...
- 【转】用树莓派搭建web服务器
本文将详细介绍如何在树莓派上配置服务器,和<教你在Xubuntu上搭建LAMP服务器>有些类似,多了一些介绍在树莓派上的不同步骤的地方. 这种服务器的配置被称为LAMP,是最流行的服务器配 ...
- 用系统为centos6的主机,搭建PXE服务器,实现批量安装centos6,7系统
1. iptables -F setenforce 0 临时关掉selinux,清掉防火墙 永久生效更改配置文件:vim /etc/sysconfig/selinux chkconfig iptabl ...
- MQ服务器奔溃解决过程
1.MQ服务器崩溃调节: 今天具安卓前端反应, 从昨天下午开始线上服务器使用 电话号码登陆和 使用电话号码注册功能不能使用, 经过前端仔细排查怀疑是后端问题,之后经过与ios前端 确认, 定位为后端服 ...
随机推荐
- 2018.11.01 bzoj4872: [Shoi2017]分手是祝愿(期望dp)
传送门 一道不错的题. 考虑n==kn==kn==k的时候怎么做. 显然应该从nnn到111如果灯是开着的就把它关掉这样是最优的. 不然如果乱关的话会互相影响肯定不如这种优. 于是就可以定义状态f[i ...
- 2018.10.25 bzoj4350: 括号序列再战猪猪侠(区间dp)
传送门 区间dp好题. 首先我们并不用把右括号拿进来一起dpdpdp,而是直接用左括号来dpdpdp. 然后定义状态fi,jf_{i,j}fi,j表示区间[l,r][l,r][l,r]的合法方案数. ...
- Spring Boot 入门实践
一.Eclipse配置Spring Boot环境 1.查看eclipse版本信息: 2.登录:http://spring.io/tools/sts/all 看eclipse对应的插件版本对应的ecli ...
- matchesSelector()方法
let result = element.matches(selectorString); result 的值为 true 或 false. selectorString 是个css选择器字符串. i ...
- 使用mockserver来进行http接口mock
转载自:https://blog.csdn.net/heymysweetheart/article/details/52227379:(注,这个不是很符合我的要求,它主要的作用是可以通过简单的代码就能 ...
- Tensorflow RNN_LSTM实例
RNN的一种类型模型被称为长短期记忆网络(LSTM).我觉得这是一个有趣的名字.它听起来也意味着:短期模式长期不会被遗忘. LSTM的精确实现细节不在本文的范围之内.相信我,如果只学习LSTM模型会分 ...
- Altera PLL应用中注意的问题
无论是差分转单端信号还是单端信号转差分信号,都要都要用到altiobuf.而且在pin planner中要设置管脚的标准为差分的 而且要注意管脚的正负极性. 今天用FPGA做测试:把专门用于PLL的输 ...
- webservice之helloword(web)rs
spring整合webservice 1.pom.xml文件 <dependencies> <!-- cxf 进行rs开发 必须导入 --> <dependency> ...
- day22(过滤器Filter)
过滤器 生命周期:初始化 -----过滤-------销毁 作用:过滤url ,特定字符 创建方式:实现一个接口继承Filter package com.baidu.filter; import ja ...
- ACE Editor在线代码编辑器简介及使用引导
转自博客:https://www.cnblogs.com/cz-xjw/p/6476179.html ACE 是一个开源的.独立的.基于浏览器的代码编辑器,可以嵌入到任何web页面或JavaScrip ...