pmq再学习三

简介: 前面我们已经了解了在做好基础数据的准备工作后,启动测试的时候,会做一个注册消费组的工作,完成后,我们就可以执行生产者发消息操作了。发消息的操作是:发送消息完成后,由于其采用的拉模式,我们可以看到消息在经过发送,存储到数据库之后,会做一个通知拉取数据操作,然后执行拉取。拉取完成后,进行响应。此时会进行消费操作,而这个过程的处理关键是handleData操作,从代码中,我们可以看到其是执行的线程操作是一个batchExcute批量执行操作,可以看到其里面有一个重要方法:threadExcute方法,从而进一步看到我们想看到的方法doMessageReceived

前面我们已经了解了在做好基础数据的准备工作后,启动测试的时候,会做一个注册消费组的工作,完成后,我们就可以执行生产者发消息操作了。发消息的操作是:

@GetMapping("/test1")
publicvoidtest1(@RequestParamStringtopicName, @RequestParamintcount) {
if (Util.isEmpty(topicName)) return;
Executors.newSingleThreadExecutor().submit(newRunnable() {
@Overridepublicvoidrun() {
for (inti=1; i<count; i++) {
try {
MqClient.publish(topicName, "", newProducerDataDto(String.valueOf(i)));
       } catch (MqNotInitExceptione) {
// TODO Auto-generated catch blocke.printStackTrace();
         } catch (ContentExceed65535Exceptione) {
// TODO Auto-generated catch blocke.printStackTrace();
       }
Util.sleep(10);
     }
   }
 });
}

发送消息完成后,由于其采用的拉模式,我们可以看到消息在经过发送,存储到数据库之后,会做一个通知拉取数据操作,然后执行拉取。拉取完成后,进行响应。此时会进行消费操作,而这个过程的处理关键是handleData操作,从代码中,我们可以看到其是执行的线程操作是一个batchExcute批量执行操作,可以看到其里面有一个重要方法:threadExcute方法,从而进一步看到我们想看到的方法doMessageReceived,这个方法会调用我们自定义的方法实现消费。

// 执行消费操作

@OverridepublicList<Long>onMessageReceived(List<MessageDto>messages) {
try {
// 执行消息消费TransactioncatTransaction=null;
System.out.println("开始接收生产者发送过来的消息");
for (MessageDtomessageDto : messages) {
// 执行消息消费System.out.println("当前接收到的消息是messageDto消费组:"+messageDto.getConsumerGroupName() +" "+"当前接收的消费主题:"+messageDto.getTopicName()
\+" "+"当前接收到的消息:"+messageDto.getBody());
   }
System.out.println("接收成功");
 } catch (Exceptione) {
// TODO Auto-generated catch blocke.printStackTrace();
 }
returnnull;
}

而从消息的结果可以看到其打印出来的消费消息。


目录
相关文章
|
2月前
|
机器学习/深度学习 人工智能 算法
【C/C++】C/C++编程——为什么学习 C++?
当提到C++的时候,很多人会觉得语法复杂、学习曲线陡峭,并且好像与C语言还有点"纠缠不清"。尽管如此,C++仍然是当今世界上最受欢迎和最有影响力的编程语言之一。特别是在当今快速发展的人工智能(AI)领域,尤其是在大模型技术的兴起背景下,学习C++语言对于从事相关技术研究和开发的人员来说仍然具有重要意义。
19 2
|
XML Java 数据格式
|
8月前
|
架构师 算法 程序员
|
9月前
|
NoSQL Java jenkins
|
9月前
|
设计模式 人工智能
二零二二年十二月学习总结
二零二二年十二月学习总结
51 2
|
9月前
|
前端开发 NoSQL Java
如何学习?今天聊聊关于学习
如何学习?今天聊聊关于学习
133 0
|
11月前
|
存储 Kubernetes 安全
k8s安全学习
k8s安全学习
283 0
|
人工智能 城市大脑 达摩院
学习+思考+资料总结
基本结构 程序 = 算法+数据结构 软件 = 程序 + 软件工程 软件企业 = 软件 + 商业模式 闲是灵感的源泉,忙是思维的坟墓。
76 0
|
网络协议 Linux 网络安全
MTPuTTy学习
MTPuTTy学习
|
弹性计算 Java 关系型数据库
学习介绍
解压tomcat压缩包 tar -zxvf apache-tomcat-8.5.70.tar.gz。 解 在idea将下面打包成war,通过命令传到服务器的tomcat里面,传进去后将会自己解压 通过这次的云服务器ECS的使用,我收获颇丰,第一次将项目放到了服务器上进行访问,在过程中,因为我目前使用的springboot,所以在tomcat上面使用较少,遇到大多数问题是部署到云服务器上端口以及连接的错误和Linux指令的不熟悉,我经常通过网络找各种解决办法,配置端口,删除重新解压一下,最后才能使用,将这次的心得体会写下来,以后再次使用阿里云服务器的时候,我看看通过这个文章,可以更快的部署服务器