- 1.2 EMQ简介
- 1.3 快速开始
- 1.3.1 集群信息
- 1.3.2 控制台管理示例
- 1.3.3 代码示例
- 1.3.4 SDK
- 1.4 基础知识
- 1.4.1 基本概念
- 1.4.2 消息状态和接收模型
- 1.5 常见问题
- 1.5.1 Queue
- 1.5.2 Message
- 1.5.3 常见异常
- 1.5.4 其他
- 1.6 Queue API
- 1.6.1 创建/删除/清理 Queue
- 1.6.2 设置 Queue 属性/配额
- 1.6.3 获取 Queue 信息
- 1.6.4 Queue 权限操作
- 1.6.5 拷贝 Queue 元数据
- 1.7 Message API
- 1.7.1 发送 Message
- 1.7.2 接收 Message
- 1.7.3 更改 Message 不可见时间
- 1.7.4 删除(ACK) Message
- 1.7.5 重新驱动 Message
- 1.7.6 查询 Message
- 1.7.7 直接删除 Message
- 1.8 报警/统计 API
- 1.8.1 设置/获取 用户联系/配额信息
- 1.8.2 添加/移除/获取 Queue 报警策略
- 1.8.3 设置/获取 Queue 每日消息统计
- 1.9 高级队列功能
- 1.9.1 多读者/Tag
- 1.9.1.1 模型介绍
- 1.9.1.2 相关API
- 1.9.2 死信队列
- 1.9.3 Topic Queue
- 1.9.4 Priority Queue
- 1.10 计费规则
- 1.11 新旧版认证迁移
1.7.1 发送 Message
向Queue中send message, 不可以向死信队列(Dead Letter Queue)中send message。
方法参数SendMessageRequest
queueName : String : required
messageBody : String : required
message的内容,即消息体
delaySeconds : int : optional
延迟时间
Message进入Queue之后,在经过延迟时间后才变得可见,从而被用户接收
如果未设值,将使用Queue中设置的值
Queue中默认值:0
合法范围: [0, 900]
注:如果有更大范围延迟时间需求,请联系emq相关人员帮忙开放
invisibilitySeconds : int : optional
不可见时间
这条Message被用户接收后,如果没有被用户及时删除,经过不可见时间后,将重新变为可见
如果未设值,将使用Queue中设置的值
Queue中默认值:30
合法范围: [2, 43200]
messageAttributes : Map< String, MessageAttribute > : optional
message附带的用户自定义属性Map
属性名为String类型,属性值为MessageAttribute类型
这些属性的size也包含在message的总体size中,共同受Queue属性messageMaximumBytes
的限制
MessageAttribute类型的字段包括:
- type : String : required
- stringValue : String : optional
- binaryValue : byte[] : optional
type是属性的类型,目前支持string和binary两种
用户可以在type后附加自己定义的子类型, 如string.Number
,binary.File
。子类型对EMQ服务透明
如果type以string开头,则认为是string类型,如果以binary开头,则为binary类型。type中只可包含数字、字母和句点
stringValue和binaryValue不可同时为空,而且必须和type类型相对应
例如,用户希望在message中附带一张图片,则可以将type设置为binary.JPEG
, 将binaryValue设为图片的data
注: DLQ.sourceQueue是系统保留的用户属性关键字,用户不可自定义这个名称的属性。
topic : String : optional
Message的topic,默认为空
详见TopicQueue
priority : int : optional
Message的优先级,默认为8,范围为[1, 16]. 只有当Queue设置了允许了消息优先级时,消息的优先级才能生效。 详见PriorityQueue
方法返回SendMessageResponse
messageID : String
用来惟一标识message的字符串。同一Queue内不同的message的messageID不会相同
bodyLength : int
消息体的长度。即只包括messageBody的长度
bodyMd5 : String
消息体的MD5校验和
sendTimestamp : long
message到达EMQ server的时间戳
一次向Queue中send多条message (一般不超过10条) 目前此操作默认为原子性操作。即,send的多条消息要么同时成功,要么同时失败
方法参数SendMessageBatchRequest
queueName : String : required
sendMessageBatchRequestEntryList : List< SendMessageBatchRequestEntry > : required
send message的列表,每个元素为一条message
SendMessageBatchRequestEntry具体包括:
- entryId : String : required
- messageBody : String : required
- delaySeconds : int : optional
- invisibilitySeconds : int : optional
- priority : int : optional
- messageAttributes : Map< String, MessageAttribute > : optional
其中entryId用来在整个List中惟一地标识一条message,因此不可为空,也不可重复。方法的返回值将使用此entryId来索引每条message的返回信息
其余字段的含义与SendMessageRequest
中对应字段相同
topic : String : optional
请求中所有Message的topic,默认为空
(即本操作中,所有Message的topic必须一样)
详见TopicQueue
方法返回SendMessageBatchResponse
successful : List< SendMessageBatchResponseEntry >
成功send的message的返回信息
SendMessageBatchResponseEntry类型包含的具体字段如下:
- entryId : String
- messageID : String
- bodyLength : int
- bodyMd5 : String
- sendTimestamp : long
其中entryId与SendMessageBatchRequestEntry
类型中的entryId相对应,其余字段与SendMessageResponse
中的对应字段含义相同
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论