Skip to content

informat.mq 消息队列

概述

使用informat.mq执行消息队列操作

basicGet

从队列拉取消息

javascript
informat.mq.basicGet(module,queue,autoAck)
参数类型描述
moduleString消息队列模块标识符
queueString队列的标识符
autoAckBoolean设置是否自动确认。一般设置为false,即不自动确认

返回值

类型为 QueueMessage

TIP

  • 如果想获取单条消息,就要使用拉模式。但是不能用循环拉模式来代替推模式,这样会严重影响性能。

示例

publish

发送消息到队列中

javascript
informat.mq.publish(moduleKey,routingKey,setting,message)
参数类型描述
moduleString消息队列模块标识符
routingKeyString路由键
settingPublishSetting发送设置
messageString要发送的消息

INFO

  • 如果开启了 setting.waitForConfirms,在消息投递后会等待消息队列确认消息已投递成功,如果投递不成功则抛出异常
  • 开启setting.waitForConfirms会影响投递的性能,但是可以保证投递成功

示例

js
// 任务完成后发送消息队列
let body={
	taskId:'1',
	taskStatus:'finished'
}
informat.mq.publish('mq','TaskQueue',null,JSON.stringify(body));

queuePurge

清空队列

javascript
informat.mq.queuePurge(module,queue)
参数类型描述
moduleString消息队列模块标识符
queueString队列的标识符

示例

任务完成后发送消息队列

js
informat.mq.queuePurge('mq','TaskQueue');

basicAck

收到消息以后,手动应答数据接收成功

javascript
informat.mq.basicAck(message, multiple)
参数类型描述
messageQueueMessage消息对象
multipleBoolean是否支持批量确认

示例

javascript
// 收到任务完成消息事件
informat.mq.basicAck(message,true);

basicNack

Nack方式的拒绝 允许消费者拒绝一条消息,并且可选择将消息重新放回队列,或者将其丢弃

javascript
informat.mq.basicNack(message,multiple,requeue)
参数类型描述
messageQueueMessage消息对象
multipleBoolean如果false,表示该deliveryTag消息被拒绝。如果为true,则将小于deliveryTag之前的所有消息全部拒绝。
requeueBoolean是否重新投递到队列中

示例 收到任务完成消息事件,处理业务失败后

javascript
informat.mq.basicNack(message,true, true);

basicReject

Reject拒绝消息 当消息被拒绝后,并且requeue为false时 消息会被投递到死信队列中

javascript
informat.mq.basicReject(message,requeue)
参数类型描述
messageQueueMessage消息对象
requeueBoolean是否重新投递到队列中

示例

javascript
informat.mq.basicReject(message,true);

basicRecover

重新发送未被确认的消息

javascript
informat.mq.basicRecover(message,requeue);
参数类型描述
messageQueueMessage消息对象
requeueBoolean如果requeue为true,则未被确认的消息会被重新加入到队列中,这样对于同一条消息来说,可能会被分配给与之前不同的消费者。如果为false,那么同一条消息会被分配给之前相同的消费者

示例

javascript
informat.mq.basicRecover(message, true);

如果不小心在消息队列后台删除了一个队列,怎么处理?

  • 可以在织信消息队列模块的配置界面,找到对应的消息队列,编辑后重新发布,平台会自动创建消息队列。