# Message Queue 应该发送什么样的数据

**URL:** <https://www.isharkfly.com/t/message-queue/16418>\
**Category:** BigData\
**Tags:** activemq\
**Created:** [October 11, 2024, 11:00pm UTC](https://www.isharkfly.com/t/message-queue/16418 "2024-10-11T23:00:13Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![honeymoose](https://www.isharkfly.com/user_avatar/www.isharkfly.com/honeymoose/32/20796_2.png) [@honeymoose](https://www.isharkfly.com/u/honeymoose)\
**Post date:** [October 11, 2024, 11:00pm UTC](https://www.isharkfly.com/t/message-queue/16418/1 "2024-10-11T23:00:14Z")

</div>

消息队列（Message Queue），简称为MQ，是一种跨进程的通信机制，用于上下游传递消息。常见消息队列中间件如：Kafka、ActiveMQ、RabbitMQ、RocketMQ等。

消息队列引入对系统的优势

**解耦**  
在未使用消息队列的系统中，系统间耦合性太强。如下图所示的业务场景，系统A在代码中直接调用系统B和系统C的代码，如果将来D系统接入或者B系统取消，系统A还需要修改代码，造成系统风险。

在这个场景中，A系统与其它的系统严重耦合，A系统要考虑各个下游系统如果挂掉的话的失败重试或兜底策略。

**异步**  
在未使用消息队列的系统中，一些非必要的业务逻辑以同步的方式运行，耗费大量时间。

## 数据处理考虑

大量数据处理时候的消息应该怎么发？

例如下面的这个表格，我们在爬虫的时候能够把整个数据爬取下来。

 ![2024-10-11_18-57-16](https://cdn.isharkfly.com/com-isharkfly-www/discourse-uploads/original/2X/4/4072272693e17da8967b793d469131cce150b678.png)

这个表格的数据可能有 20 多万条记录，当然我们是可用把这 20 多万条的数据全部拼装成一个 JSON 数据格式发送到后端。

在这种处理方式的时候，我们发现需要用到批量，因为要涉及查重和约束等操作。

在整个过程中很容易出现异常后到这整个数据都没有被办法导入。

针对这种数据情况，我们认为消息应该是获得单一的记录拼装发到消息服务器上。

简单的来说就是把一个大数据进行拆分后发送。
