php-mq/协议

PHPMQ消息协议

dev-master 2018-01-01 23:53 UTC

This package is auto-updated.

Last update: 2024-09-10 05:33:41 UTC


README

Build Status Latest Stable Version Total Downloads Coverage Status

协议

描述

PHPMQ消息协议

安装

composer require php-mq/protocol

使用

消息头

每个客户端发送到端点的消息都必须有一个前置头行,该行定义了

  • 一个标识该行为消息头的标志
  • 一个标识消息协议版本的数字
  • 消息的类型(见消息类型)(3字节)
  • 后续包的数量(见包类型

示例

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 - 消息ID
  • 05 - 消息TTL

对于消费

  • 01 - 队列名称
  • 04 - 客户端希望从队列中消费的消息数

对于消息确认

  • 01 - 队列名称
  • 03 - 消息ID

对于消息重新入队

  • 01 - 队列名称
  • 03 - 消息ID
  • 05 - 消息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

贡献

欢迎贡献,并将得到充分认可。请参阅贡献指南以获取详细信息。