Protocol Specification
Magic Code: 4 bit, defaultValue:WEMQ
Protocol Version: 4 bit, defaultValue:0000
Message Size: 4 bit, the total length of message
Header Size: 4 bit,the length of Message Header
Message Header: the specific header content of message
Message Body: the specific body content of message
- Message Composition
The class of Package.java is message object in business logic layer. It contains two parts: header and body.
public class Package {
private Header header;
private Object body;
}
public class Header {
private Command cmd;
private int code;
private String msg;
private String seq;
}- Specificatiion
Message Header(header): The field of Command in Header, used to distinguishing different message types.
Message Body(body): The message body is defined as different objects according to the message type.
| Command | type of Body |
|---|---|
| HEARTBEAT_REQUEST, HEARTBEAT_RESPONSE, HELLO_RESPONSE, CLIENT_GOODBYE_REQUEST, CLIENT_GOODBYE_RESPONSE, SERVER_GOODBYE_REQUEST, SERVER_GOODBYE_RESPONSE, LISTEN_REQUEST, LISTEN_RESPONSE, UNSUBSCRIBE_REQUEST, SUBSCRIBE_RESPONSE, UNSUBSCRIBE_RESPONSE, ASYNC_MESSAGE_TO_SERVER_ACK, BROADCAST_MESSAGE_TO_SERVER_ACK | -- |
| HELLO_REQUEST | UserAgent |
| SUBSCRIBE_REQUEST | Subscription |
| REQUEST_TO_SERVER, REQUEST_TO_CLIENT, RESPONSE_TO_SERVER, RESPONSE_TO_CLIENT, ASYNC_MESSAGE_TO_SERVER, ASYNC_MESSAGE_TO_CLIENT, BROADCAST_MESSAGE_TO_SERVER, BROADCAST_MESSAGE_TO_CLIENT, ASYNC_MESSAGE_TO_CLIENT_ACK, BROADCAST_MESSAGE_TO_CLIENT_ACK, RESPONSE_TO_CLIENT_ACK, REQUEST_TO_CLIENT_ACK | OpenMessage |
| REDIRECT_TO_CLIENT | RedirectInfo |
public enum Command {
//HeartBeat
HEARTBEAT_REQUEST(0), //client send heartbeat request to server
HEARTBEAT_RESPONSE(1), //server reply heartbeat response to client
//Hello
HELLO_REQUEST(2), //client send connect request to server
HELLO_RESPONSE(3), //server reply connect response to client
//Disconncet
CLIENT_GOODBYE_REQUEST(4), //client send disconnect request to server
CLIENT_GOODBYE_RESPONSE(5), //server reply disconnect response to client
SERVER_GOODBYE_REQUEST(6), //server send disconncet request to client
SERVER_GOODBYE_RESPONSE(7), //client reply disconnect response to server
//Subscribe and UnSubscribe
SUBSCRIBE_REQUEST(8), //client send subscribe request to server
SUBSCRIBE_RESPONSE(9), //server reply subscribe response to client
UNSUBSCRIBE_REQUEST(10), //client send unsubscribe request to server
UNSUBSCRIBE_RESPONSE(11), //server reply unsubscribe response to client
//Listen
LISTEN_REQUEST(12), //client send listen request to server
LISTEN_RESPONSE(13), //server reply listen response to client
//send sync message
REQUEST_TO_SERVER(14), //client(Producer) send sync msg to server
REQUEST_TO_CLIENT(15), //server push sync msg to client(Consumer)
REQUEST_TO_CLIENT_ACK(16), //client(Consumer) send ack of sync msg to server
RESPONSE_TO_SERVER(17), //client(Consumer) send reply msg to server
RESPONSE_TO_CLIENT(18), //server push reply msg to client(Producer)
RESPONSE_TO_CLIENT_ACK(19), //client(Producer) send ack of reply msg to server
//send async message
ASYNC_MESSAGE_TO_SERVER(20), //client send async msg to server
ASYNC_MESSAGE_TO_SERVER_ACK(21), //server reply ack of async msg to client
ASYNC_MESSAGE_TO_CLIENT(22), //server push async msg to client
ASYNC_MESSAGE_TO_CLIENT_ACK(23), //client reply ack of async msg to server
//send broadcast message
BROADCAST_MESSAGE_TO_SERVER(24), //client send broadcast msg to server
BROADCAST_MESSAGE_TO_SERVER_ACK(25), //server reply ack of broadcast msg to client
BROADCAST_MESSAGE_TO_CLIENT(26), //server push broadcast msg to client
BROADCAST_MESSAGE_TO_CLIENT_ACK(27), //client reply ack of broadcast msg to server
//redirect
REDIRECT_TO_CLIENT(30), //server send redirect instruction to client
}| Scene | Client Send | Server Reply | Remark |
|---|---|---|---|
| Hello | HELLO_REQUEST | HELLO_RESPONSE | |
| Heartbeat | HEARTBEAT_REQUEST | HEARTBEAT_RESPONSE | |
| Subscribe | SUBSCRIBE_REQUEST | SUBSCRIBE_RESPONSE | |
| Unsubscribe | UNSUBSCRIBE_REQUEST | UNSUBSCRIBE_RESPONSE | |
| Listen | LISTEN_REQUEST | LISTEN_RESPONSE | |
| Send sync msg | REQUEST_TO_SERVER | RESPONSE_TO_CLIENT | |
| Send reply msg of sync msg | RESPONSE_TO_SERVER | -- | |
| Send async msg | ASYNC_MESSAGE_TO_SERVER | ASYNC_MESSAGE_TO_SERVER_ACK | |
| Send broadcast msg | BROADCAST_MESSAGE_TO_SERVER | BROADCAST_MESSAGE_TO_SERVER_ACK | |
| Client start disconnect | CLIENT_GOODBYE_REQUEST | CLIENT_GOODBYE_RESPONSE |
| Scene | Server Send | Client Reply | Remark |
|---|---|---|---|
| Push sync msg to client | REQUEST_TO_CLIENT | REQUEST_TO_CLIENT_ACK | |
| Push reply msg of sync msg to client | RESPONSE_TO_CLIENT | RESPONSE_TO_CLIENT_ACK | |
| Push async msg to client | ASYNC_MESSAGE_TO_CLIENT | ASYNC_MESSAGE_TO_CLIENT_ACK | |
| Push broadcast msg to client | BROADCAST_MESSAGE_TO_CLIENT | BROADCAST_MESSAGE_TO_CLIENT_ACK | |
| Server start disconnect | SERVER_GOODBYE_REQUEST | -- | |
| Server send redirect | REDIRECT_TO_CLIENT | -- |
- Send sync msg
- Send async msg
- Send broadcast msg
The class of LiteMessage.java is message definition in http protocal of EventMesh-Runtime.If you want to send msg by using http protocol,you can use client in eventmesh-sdk-java, and you just need care the specific protocol in the field of content.
public class LiteMessage {
private String bizSeqNo;
private String uniqueId;
private String topic;
private String content;
private Map<String, String> prop;
private long createTime = System.currentTimeMillis();
}Request Method: POST
Message Composition: RequestHeader + RequestBody
- Heartbeat Msg
RequestHeader
| Key | Description |
|---|---|
| Env | Enviroment of Client |
| Region | Region of Client |
| Idc | IDC of Client |
| Dcn | DCN of Client |
| Sys | Subsystem ID of Client |
| Pid | Client Process ID |
| Ip | Client Ip |
| Username | Client username |
| Passwd | Client password |
| Version | Protocol version |
| Language | Develop language |
| Code | Request Code |
RequestBody
| Key | Description |
|---|---|
| clientType | Producer:clientType is ClientType.PUB,Consumer:clientType is ClientType.SUB |
| heartbeatEntities | Heartbeat content,contains topic,url... |
- Subscribe Msg
RequestHeader
same with RequestHeader of heartbeat msg
RequestBody
| Key | Description |
|---|---|
| topic | topic of client want to subscribe |
| url | url of client, server push msg to the url when receiving msg from other components |
- Unsubscribe Msg
RequestHeader
same with RequestHeader of Heartbeat Msg
RequestBody
same with RequestBody of Subscribe Msg
- Send async msg
RequestHeader
same with RequestHeader of Heartbeat Msg
RequestBody
| Key | Description |
|---|---|
| topic | topic of msg |
| content | msg content |
| ttl | timeout time of msg |
| bizSeqNo | biz sequence number of msg |
| uniqueId | unique mark of msg |
| Scene | Client Send | Server Reply | Remark |
|---|---|---|---|
| Heartbeat | HEARTBEAT(203) | SUCCESS(0)/PROXY_HEARTBEAT_ERROR(19) | |
| Subscribe | SUBSCRIBE(206) | SUCCESS(0)/PROXY_SUBSCRIBE_ERROR(17) | |
| Unsubscribe | UNSUBSCRIBE(207) | SUCCESS(0)/PROXY_UNSUBSCRIBE_ERROR(18) | |
| Send async msg | MSG_SEND_ASYNC(104) | SUCCESS(0)/PROXY_SEND_ASYNC_MSG_ERR(14) |
| Scene | Server Send | Client Reply | Remark |
|---|---|---|---|
| Push async msg to client | HTTP_PUSH_CLIENT_ASYNC(105) | retCode | retCode=0,send success |



