西安网站建设新闻,wp网站建设模板,电子商务网站建设分析论文,wordpress推广浏览插件前言
这篇给大家讲普通消息和批量消息#xff0c;主要配合代码进行讲解#xff0c;关于RocketMQ的基础知识已经在上篇给大家讲过需要回顾的点击下面这个链接去看
RocketMQ基础知识
普通消息
普通消息其实就很简单#xff0c;是Apache RocketMQ中最基础的消息形式#x…前言
这篇给大家讲普通消息和批量消息主要配合代码进行讲解关于RocketMQ的基础知识已经在上篇给大家讲过需要回顾的点击下面这个链接去看
RocketMQ基础知识
普通消息
普通消息其实就很简单是Apache RocketMQ中最基础的消息形式区别于有特性的顺序消息、定时/延时消息和事务消息。普通消息一般应用于微服务解耦、事件驱动、数据集成等场景这些场景大多数要求数据传输通道具有可靠传输的能力且对消息的处理时机、处理顺序没有特别要求。
在电商交易场景中上游订单系统将用户下单支付这一业务事件封装成独立的普通消息并发送至RocketMQ服务端下游按需从服务端订阅消息并按照本地消费逻辑处理下游任务。每个消息之间都是相互独立的且不需要产生关联。
在离线的日志收集场景中通过埋点组件收集前端应用的相关操作日志并转发到RocketMQ。每条消息都是一段日志数据RocketMQ不做任何处理只需要将日志数据可靠投递到下游的存储系统和分析系统即可后续功能由后端应用完成。
普通消息是RocketMQ基本消息功能支持生产者和消费者的异步解耦通信。
例如下面这个代码就是普通消息
public class Producer {public static void main(String[] args) throws Exception {//创建一个生产者指定生产者组为 sanyouProducerDefaultMQProducer producer new DefaultMQProducer(sanyouProducer);// 指定NameServer的地址producer.setNamesrvAddr(192.168.200.143:9876);// 启动生产者producer.start();//创建一条消息 topic为 sanyouTopic 消息内容为 java日记Message msg new Message(sanyouTopic, java日记.getBytes(RemotingHelper.DEFAULT_CHARSET));// 发送消息并得到消息的发送结果然后打印SendResult sendResult producer.send(msg);System.out.printf(%s%n, sendResult);// 关闭生产者producer.shutdown();}}
构建的消息的topic为sanyouTopic内容为java日记这就是一条很普通的消息
批量消息
MQ的批量消息是指将多条小的消息合并成一个批量消息然后一次发送出去。
这种批量发送的好处是可以减少网络IO提升吞吐量。在实际使用时一个批次消息的大小不应超过1MB但实际的最大限制是4194304字节大概4MB。
同时批量消息的使用也有一定限制这些消息应该有相同的Topic相同的waitStoreMsgOK。而且不能是延迟消息、事务消息等。
通俗易懂说就是将多个消息同时发过去减少网络请求的次数
public class Producer {public static void main(String[] args) throws Exception {//创建一个生产者指定生产者组为 sanyouProducerDefaultMQProducer producer new DefaultMQProducer(sanyouProducer);// 指定NameServer的地址producer.setNamesrvAddr(192.168.1.135:9876);// 启动生产者producer.start();//用以及集合保存多个消息ListMessage messages new ArrayList();messages.add(new Message(sanyouTopic, java日记 0.getBytes()));messages.add(new Message(sanyouTopic, java日记 1.getBytes()));messages.add(new Message(sanyouTopic, java日记 2.getBytes()));// 发送消息并得到消息的发送结果然后打印SendResult sendResult producer.send(messages);System.out.printf(%s%n, sendResult);// 关闭生产者producer.shutdown();}}
多个普通消息同时发送这就是批量消息
不过在使用批量消息的时候需要注意以下两点 每条消息的Topic必须都得是一样的 不支持延迟消息和事务消息
总结
普通消息和批量消息比较简单没有复杂的逻辑就是将消息发送过去在ConsumeQueue和CommitLog存上对应的数据就可以了。
联系方式
关于文章中大家有任何疑问可以通过关注公众号《编程乐学》进行留言同时公众号还有更多有趣的项目以及关于学习编程的笔记资料大家可以看看欢迎大家进行留言。