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
中的对应字段含义相同