【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 {@Testpublic 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 {@Testpublic 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);@Overridepublic 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中的全部信息:
转载于:https://www.cnblogs.com/cutter-point/p/8325959.html
【rocketMQ】1、搭建MQ服务器,生产一个订单与消费一个订单相关推荐
- nodejs快速搭建MQTT服务器
简介 MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议.它工作在TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而 ...
- 用vlc搭建流媒体服务器
用vlc搭建流媒体服务器 作者:axu82119 来源:CSDN知识库 VLC是一种开源的播放器,同时也可以用作流媒体服务器.今天试验了几种搭建流媒体服务器的方法,这里做一个归纳总结. 本文使用的VL ...
- 【转载】使用花生壳5.0在自己电脑上搭建FTP服务器
一直感觉用QQ和微信在多终端间传文件较麻烦,就在自己的电脑上鼓捣了FTP服务器,记录一下在花生壳官网上找到的攻略 1.下载.安装.登录花生壳5.0客户端并注册账号申请域名 登录账号后 点击域名, 然后 ...
- 从零搭建基于 Java 的服务器生产环境
之前的文章介绍了我最近开发的一款工具软件 移动工具箱,然而安装包放在华为应用市场上面,如果不安装华为应用市场就无法下载软件,无奈,只能自己从零搭建一个服务器来进行应用的宣传和下载.搭建一个服务器是很简 ...
- 搭建github服务器_搭建一个属于自己的公网博客
相信每一位程序员都喜欢拥有一个属于自己的博客. 当然,在我认为,内容以及模块都要自己进行可扩展定义才是真正属于自己的. 那么想要一个博客就必须要有一个服务器和一个域名,这样的话才能让自己的博文内容发扬 ...
- caffe 搭建参数服务器(1)—— 用MPI实现多节点同时训练一个模型
实现的训练过程的效果 因为主要目的是为了节点通讯,所以其他地方没改,下图是四个节点训练过程 1. 目的 使用OpenMPI进行节点间的通讯,搭建参数服务器,实现4节点同时训练一个模型 2. 思路 采用 ...
- 小程序服务器搭建前后端交互,手把手带你搭一个简单的微信小程序(包括前后端)...
开发小程序除了大家能看到的客户端,前端小程序是如何与后端服务器进行数据交互的呢? 本文将通俗易懂的讲一下.这里以nodejs为例来进行讲解 1.首先要在服务器上安装nodejs服务器: wget ...
- 使用DDNS搭建Wireguard服务器的一个小问题
使用DDNS搭建Wireguard服务器的一个小问题 遇到的问题 解决方案 批处理脚本代码 最近使用家里闲置的树莓派搭建了一个Wireguard服务器. 家里电信宽带有动态公网IP,阿里云买个冷门域名 ...
- 基于ESP32搭建物联网服务器十三(自已搭建一个MQTT服务器)
在之前的文章中:ESP32搭建WEB服务器十二(使用MQTT协议与ESP32互动)_你的幻境的博客-CSDN博客 我们已经实现了ESP32通过MQTT协议连接到公共MQTT服务器上,但是公共服务器在稳 ...
最新文章
- 浏览器tab关闭事件_Python--使用Pyqt5实现简易浏览器(最新版本测试过)
- html中引入ifrim视频,Making Of Rallypoint - Outer Rim
- sQLserver T-SQL 事务的用法
- ios点击大头针气泡不弹出_百度地图使用(二)自定义大头针和弹出气泡
- JavaSE(二十四)——冒泡排序、选择排序、直接插入排序以及二分查找
- 通过jsp向mysql批量导入数据_JSP+Servlet+C3P0+Mysql实现的图书馆管理系统
- YApi--使用YApi的目的
- 桶排序Bucket sort(转)
- final可以修饰哪些java名词_Java关键知识点 - Java final关键字到底修饰了什么?
- 三绕组变压器参数计算matlab,三绕组变压器等值参数计算
- Excel如何批量设置行高
- 支付宝api全(支付宝支付(app,h5,js),支付宝订单查询,支付宝退款,支付宝交易退款查询,支付宝提现,支付宝提现查询)
- 量子物理史话 第四章 白云深处
- 一篇文让你看懂NB-IoT、LoRa、eMTC、Sigfox及ZigBee的应用场景【转】
- STM32【复习串口】
- 07_02Redis
- android 手势识别代码
- Linux内存管理内存映射以及通过反汇编定位内存错误问题
- 阿里云虚拟云主机使用PHPMailer无法发送邮件的问题
- 10月17日科技资讯|拼多多用户超 4 亿;苹果欲研发“智能戒指”;MySQL 8.0.18 稳定版发布 | 极客头条