MQ(name, account, region)

MQ 操控队列里的消息.

字段 类型 必填 默认 可选值 说明
name String mq名字
account Object 账号对象
region String 可选 hangzhou 外网"hangzhou", "beijing" , "qingdao", 内网 "hangzhou-internal", "beijing-internal" , "qingdao-internal" 提供队列服务的数据中心
var AliMNS = require("ali-mns");
var account = new AliMNS.Account("<your-owner-id>", "<your-key-id>", "<your-key-secret>");
var mq = new AliMNS.MQ("myAliMQ", account, "hangzhou");

mq.sendP(message, priority, delaySeconds)

发送消息到队列.

字段 类型 必填 默认 可选值 说明
message String 发送到队列的内容
priority number optional. 8 1~16 优先级
delaySecond: number optional. 0 0~604800(7天) 延迟秒数,优先于消息队列属性options.DelaySeconds
mq.sendP("Hello Ali-MNS", 8, 0).then(console.log, console.error);

mq.recvP(waitSeconds)

从队列中接受消息,这将使消息一段时间不可见.

字段 类型 必填 说明
waitSeconds number 可选 如果队列空最长等待时间, 然后返回错误 MessageNotExist
mq.recvP(5).then(console.log, console.error);

mq.peekP()

查看消息,不修改消息的可见性.

mq.peekP(5).then(console.log, console.error);

mq.deleteP(receiptHandle)

从队列中删除消息.消息接受将短暂不可见.消息执行后必须删除,否则它会被再执行一次。

字段 类型 说明
receiptHandle String Return by mq.recvP or mq.notifyRecv
    mq.recvP(5).then(function(data){
        return mq.deleteP(data.Message.ReceiptHandle);
    }).then(console.log, console.error);

mq.reserveP(receiptHandle, reserveSeconds)

保留一个接收到的消息。

字段 类型 说明
receiptHandle String mq.recvP 或 mq.notifyRecv返回值.
reserveSeconds number 消息存储时长, 单位秒. 1~43200(12小时).
mq.recvP().then(function(data){
        return mq.reserveP(data.Message.ReceiptHandle, 120);
}).then(function(dataReserved){
        return mq.deleteP(dataReserved.ChangeVisibility.ReceiptHandle);
});

如果接受数据后需要更长的时间来执行,你可以存一段时间.根据reserveSeconds值,从现在开始继续保持不可见.设置短时间也是可以的。

如果成功, 新的 receiptHandle 将返回替换旧的, 后面的 mq.deleteP 活着 mq.reserveP 将使用新的.

新的 receiptHandle 在reserveSeconds后将失.

mq.notifyRecv(callback, waitSeconds)

为接受消息注册一个回调函数.

字段 类型 必填 默认 可选值 说明
callback function 每次接收消息将调用回调函数.如果回调返回 true, 消息自动删除,如果返回false必须手动删除.
waitSeconds number 可选 5 1~30. 轮询循环最长等待时间. 轮训开始, 将检测mq.notifyStopP是否被调用, 大数字将导致很慢的 mq.notifyStopP.设为 0 ,使用默认5s.
mq.notifyRecv(function(err, message){
    console.log(message);
    if(err && err.message === "NetworkBroken"){
        // Best to restart the process when this occurs
        throw err;
    }
    return true; // this will cause message to be deleted automatically
});

Both callback functions will work if you call notifyRecv twice for 2 different callback functions. But each received message only will trigger one of them only.

mq.notifyStopP()

停止 mq.notifyRecv 工作. The promise object returned will not be resolved until the receiving loop stopped actually. The max time wait for notifyRecv() stop is determined by waitSeconds passed to mq.notifyRecv.

mq.notifyStopP().then(console.log, console.error);

mq.getAttrsP()

获取mq属性.

mq.getAttrsP().then(console.log, console.error);

mq.setAttrsP(options)

设置mq属性.

字段 说明
options 队列属性. 查看 mns.createP 的options
mq.setAttrsP({
    DelaySeconds: 0,
    MaximumMessageSize: 65536,
    MessageRetentionPeriod: 345600,
    VisibilityTimeout: 30,
    PollingWaitSeconds: 0
}).then(console.log, console.error);

results matching ""

    No results matching ""