Skip to content

Commit 6d11672

Browse files
committed
Add message queue doc
1 parent e14f317 commit 6d11672

File tree

4 files changed

+34
-27
lines changed

4 files changed

+34
-27
lines changed

Course2: Decompose monolithic system/index.md

-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ user story 能产生 domain model & operation
5050

5151
![Example](./assets/2.8.jpg)
5252

53-
5453
## 3.2 按子领域拆分
5554

5655
![按子领域拆分](./assets/2.9.jpg)
Loading
Loading
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,18 @@
11
微服务间进程通讯
22
============
33
- [微服务间进程通讯](#微服务间进程通讯)
4-
- [1. 有哪些通讯方式?](#1-有哪些通讯方式)
5-
- [2. 通讯风格](#2-通讯风格)
6-
- [3. 消息的格式](#3-消息的格式)
7-
- [4. 基于消息队列的通讯模式](#4-基于消息队列的通讯模式)
8-
- [4.1 如何基于消息队里实现请求回复模式](#41-如何基于消息队里实现请求回复模式)
9-
- [4.2 如何处理重复消息?](#42-如何处理重复消息)
10-
- [4.3 一个生产者,多个消费者,如何确保一个订单的消息派发给同一个的消费者, 且保证消息的顺序?](#43-一个生产者多个消费者如何确保一个订单的消息派发给同一个的消费者-且保证消息的顺序)
11-
- [4.4 事务中的消息](#44-事务中的消息)
12-
13-
## 1. 有哪些通讯方式?
14-
15-
RPC, GRPC, Message Queue, HTTP(RESTfull, GraphQL)
16-
17-
18-
## 2. 通讯风格
4+
- [1.1 通讯风格](#11-通讯风格)
5+
- [1.2 消息的版本](#12-消息的版本)
6+
- [1.3 消息的格式](#13-消息的格式)
7+
- [1.4 有哪些通讯方式?](#14-有哪些通讯方式)
8+
- [2.1 基于消息队列的通讯模式](#21-基于消息队列的通讯模式)
9+
- [2.1.1 消息队列介绍](#211-消息队列介绍)
10+
- [2.2 如何基于消息队里实现请求回复模式](#22-如何基于消息队里实现请求回复模式)
11+
- [2.3 如何处理重复消息?](#23-如何处理重复消息)
12+
- [2.4 一个生产者,多个消费者,如何确保一个订单的消息派发给同一个的消费者, 且保证消息的顺序?](#24-一个生产者多个消费者如何确保一个订单的消息派发给同一个的消费者-且保证消息的顺序)
13+
- [2.5 事务中的消息](#25-事务中的消息)
14+
15+
## 1.1 通讯风格
1916

2017
第一个维度
2118

@@ -29,21 +26,24 @@ RPC, GRPC, Message Queue, HTTP(RESTfull, GraphQL)
2926
* 同步调用
3027
* 异步调用
3128

32-
## 3. 消息的格式
29+
## 1.2 消息的版本
30+
31+
## 1.3 消息的格式
3332

3433
* 纯文本
3534
* 二进制(Protobuff, Apache Thrift)
3635

3736
[Beating JSON performance with Protobuf](https://auth0.com/blog/beating-json-performance-with-protobuf/)
3837

39-
## 4. 基于消息队列的通讯模式
38+
## 1.4 有哪些通讯方式?
4039

41-
![基于消息队列的通讯模式](./assets/1627461333618.jpg)
40+
RPC, GRPC, Message Queue, HTTP(RESTfull, GraphQL)
4241

42+
## 2.1 基于消息队列的通讯模式
4343

44-
1. 点对点
45-
2. 订阅(publish-subscribe)
44+
### 2.1.1 消息队列介绍
4645

46+
![AMQP 0-9-1 Model in Brief](./assets/2022-01-05-14-06-21.png)
4747

4848
connection
4949

@@ -53,22 +53,30 @@ channel
5353

5454
queue
5555

56-
5756
[消息队列的概念](https://www.rabbitmq.com/tutorials/amqp-concepts.html)
5857

59-
### 4.1 如何基于消息队里实现请求回复模式
58+
59+
![基于消息队列的通讯模式](./assets/1627461333618.jpg)
60+
61+
* 点对点(point to point)
62+
* 订阅(publish-subscribe)
63+
64+
65+
### 2.2 如何基于消息队里实现请求回复模式
6066

6167
![如何基于消息队里实现请求回复模式](./assets/1627461542655.jpg)
6268

63-
### 4.2 如何处理重复消息?
69+
### 2.3 如何处理重复消息?
70+
71+
### 2.4 一个生产者,多个消费者,如何确保一个订单的消息派发给同一个的消费者, 且保证消息的顺序?
6472

65-
### 4.3 一个生产者,多个消费者,如何确保一个订单的消息派发给同一个的消费者, 且保证消息的顺序?
73+
![message order](./assets/2022-01-05-13-57-53.png)
6674

6775
[RabbitMQ Shading](https://github.com/rabbitmq/rabbitmq-sharding)
6876
[rabbitmq-message-order-of-delivery](https://stackoverflow.com/questions/21363302/rabbitmq-message-order-of-delivery)
6977

70-
### 4.4 事务中的消息
78+
### 2.5 事务中的消息
7179

7280
比如在OrderService创建订单的过程中,需要发布一个“新订单”事件, KitchenService服务订阅了它。OrderService需要确保,“新订单”,这个时间在一个数据库事务中产生。
7381

74-
[事务中的消息](./1627516258927.jpg)
82+
![事务中的消息](./assets/1627516258927.jpg)

0 commit comments

Comments
 (0)