php-mq / 协议
PHPMQ消息协议
dev-master
2018-01-01 23:53 UTC
Requires
- php: >=7.1
Requires (Dev)
- tm/tooly-composer-script: ^1.0
This package is auto-updated.
Last update: 2024-09-10 05:33:41 UTC
README
协议
描述
PHPMQ消息协议
安装
composer require php-mq/protocol
使用
消息头
每个客户端发送到端点的消息都必须有一个前置头行,该行定义了
示例
H0100102
means:
PACKET-ID | VERSION | MSG-TYPE | PACKAGE COUNT
H | 01 | 001 | 02
因此,头始终具有8个字节的长度。
消息类型
001
- 客户端发送消息(客户端到服务器)002
- 客户端希望消费消息(消费请求)003
- 服务器分发消息(服务器到客户端)004
- 客户端确认消息(确认)005
- 客户端希望重新入队消息(从队列中弹出,追加到队列)006
- 客户端为消息发送死信(从队列中删除消息)
包头
消息中的每个数据包之前都有一个包头,该头定义了
- 一个标识该行为包头的标志
- 一个标识包类型的数字
- 后续包内容的长度
示例
P01000000000000000000000000000000256
means:
PACKET-ID | PKG-TYPE | CONTENT-LENGTH (as int)
P | 01 | 256
因此,包头始终具有32个字节的长度。
请注意:内容长度为32个字节,并用零填充。
包类型
所有
对于客户端到端点的消息
01
- 队列名称02
- 消息内容05
- 消息TTL
对于端点到客户端的消息
01
- 队列名称02
- 消息内容03
- 消息ID05
- 消息TTL
对于消费
01
- 队列名称04
- 客户端希望从队列中消费的消息数
对于消息确认
01
- 队列名称03
- 消息ID
对于消息重新入队
01
- 队列名称03
- 消息ID05
- 消息TTL
对于死信
01
- 队列名称03
- 消息ID
完整消息示例
发送消息
客户端向服务器发送内容为"Hello World"的新消息,队列名称为"Foo",TTL为3600秒。
H0100103
P0100000000000000000000000000003
Foo
P0200000000000000000000000000011
Hello World
P0500000000000000000000000000004
3600
消费消息
客户端希望从队列"Foo"中消费5条消息。
H0100202
P0100000000000000000000000000003
Foo
P0400000000000000000000000000001
5
分发消息
服务器在300秒后将上述消息发送给客户端。
H0100304
P0100000000000000000000000000003
Foo
P0200000000000000000000000000011
Hello World
P0300000000000000000000000000032
d7e7f68761d34838494b233148b5486c
P0500000000000000000000000000004
3300
注意: TTL已减少到3300秒。
确认消息
客户端确认了ID为d7e7f68761d34838494b233148b5486c
的消费消息。
H0100402
P0100000000000000000000000000003
Foo
P0300000000000000000000000000032
d7e7f68761d34838494b233148b5486c
重新入队消息
客户端希望消息在队列末尾重新入队,并具有新的TTL为3600秒。
H0100503
P0100000000000000000000000000003
Foo
P0300000000000000000000000000032
d7e7f68761d34838494b233148b5486c
P0500000000000000000000000000004
3600
发送死信
客户端希望删除队列中的消息,无论其TTL如何。
H0100602
P0100000000000000000000000000003
Foo
P0300000000000000000000000000032
d7e7f68761d34838494b233148b5486c
贡献
欢迎贡献,并将得到充分认可。请参阅贡献指南以获取详细信息。