基本上,在Azure Service Bus中,我有一个主题和一个订阅。
如果消息在11:00 AM之间到达主题,则我的订户应该尚未处理它。但是,在下午14:00,我希望我的订阅者可以对其进行处理。
有没有一种方法可以通过主题过滤器本地实现此目的?
在有关过滤器的官方文档中,我没有提到任何这种用例。
实际上,所有提供的示例都与:
“订户处理这种消息,或者永远不会”。
我正在寻找:
“订户希望处理这种消息,但是稍后要在特定时间进行”。
听起来像您要推迟发送消息吗?
对Node.js的Azure SDK不太了解,但是从MSDN文档中,您可以ScheduledEnqueueTimeUtc
在消息上设置a :
预定的入队时间(UTC时间)。此值用于延迟消息发送。它用于将消息发送到将来的特定时间。
向Queue发送消息的唯一示例是:
var message = {
body: 'Test message',
customProperties: {
testproperty: 'TestValue'
}};
serviceBusService.sendQueueMessage('myqueue', message, function(error){
if(!error){
// message sent
}
});
在nodejs sdk中,我找到了一个定义这些属性的constants.js文件:
/**
* The broker properties for service bus queue messages.
*
* @const
* @type {string}
*/
BROKER_PROPERTIES_HEADER: 'brokerproperties',
...
/**
* The scheduled enqueue time header.
*
* @const
* @type {string}
*/
SCHEDULED_ENQUEUE_TIME_HEADER: 'x-ms-scheduled-enqueue-time',
如果您查看servicebusservice.js,那么有一个setRequestHeaders
函数可以获取消息的某些属性并将其设置为标头。
所以我想您可以在消息上设置该属性,如下所示:
// Set your scheduled date
var scheduledDate = Date.now();
scheduledDate.setHours(scheduledDate.getHours()+3);
var message = {
body: 'Test message',
brokerproperties: {
'x-ms-scheduled-enqueue-time': scheduledDate.toUTCString()
}};
让我知道它是否有效:-)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句