1.7.1 发送 Message

优质
小牛编辑
130浏览
2023-12-01

向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类型的字段包括:

  1. type : String : required
  2. stringValue : String : optional
  3. binaryValue : byte[] : optional

type是属性的类型,目前支持string和binary两种
用户可以在type后附加自己定义的子类型, 如string.Numberbinary.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具体包括:

  1. entryId : String : required
  2. messageBody : String : required
  3. delaySeconds : int : optional
  4. invisibilitySeconds : int : optional
  5. priority : int : optional
  6. 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类型包含的具体字段如下:

  1. entryId : String
  2. messageID : String
  3. bodyLength : int
  4. bodyMd5 : String
  5. sendTimestamp : long

其中entryId与SendMessageBatchRequestEntry类型中的entryId相对应,其余字段与SendMessageResponse中的对应字段含义相同