Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用node.js在特定延迟后从Azure ServiceBus主题发送消息_Node.js_Azure_Azureservicebus_Azure Servicebus Topics - Fatal编程技术网

使用node.js在特定延迟后从Azure ServiceBus主题发送消息

使用node.js在特定延迟后从Azure ServiceBus主题发送消息,node.js,azure,azureservicebus,azure-servicebus-topics,Node.js,Azure,Azureservicebus,Azure Servicebus Topics,基本上,在Azure服务总线中,我有一个主题和一个订阅 如果邮件在上午11:00之间到达主题,我的订阅者还不应该处理它。 然而,在下午14:00,我希望我的订户会处理它 有没有一种方法可以通过主题过滤器实现这一点 在有关过滤器的官方文档中,我没有发现任何关于此类用例的提及。 事实上,所有提供的样本都是关于: “订户处理此类消息,或从不处理此类消息。” 我在找: “订阅者希望处理此类消息,但是,稍后在特定时间处理此类消息。” 听起来你想推迟一条消息 不太了解,但从中可以在消息上设置一个schedu

基本上,在Azure服务总线中,我有一个主题和一个订阅

如果邮件在上午11:00之间到达主题,我的订阅者还不应该处理它。 然而,在下午14:00,我希望我的订户会处理它

有没有一种方法可以通过主题过滤器实现这一点

在有关过滤器的官方文档中,我没有发现任何关于此类用例的提及。
事实上,所有提供的样本都是关于:
订户处理此类消息,或从不处理此类消息。”
我在找:

订阅者希望处理此类消息,但是,稍后在特定时间处理此类消息。”

听起来你想推迟一条消息

不太了解,但从中可以在消息上设置一个
scheduledQueueTimeUTC

计划的排队时间(UTC)。此值用于延迟消息发送。它用于将消息发送延迟到将来的特定时间

唯一的样本是:

从nodejs sdk中,我找到了一个定义以下属性的文件:

/**
* 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',
如果您看一下,就会发现有一个
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()
}};

让我知道它是否工作:-)

我可以使用以下方法使它工作:

        const scheduledDate = new Date();
        scheduledDate.setMinutes(scheduledDate.getMinutes()+1);

        const message = {
        body: 'Hey, this worked again!',
        customProperties: {
            testproperty: 'TestValue'
        },
        brokerProperties: {
            ScheduledEnqueueTimeUtc: scheduledDate.toUTCString()
        }
    };
    serviceBusService.sendQueueMessage('myqueue', message, function(error){
        if(!error){
            console.log('We sent a message. Huzzah!');
        }
    });

这周我将测试它,我会让你知道:)谢谢。它似乎有效,我的团队将进行一些其他测试来验证;)
        const scheduledDate = new Date();
        scheduledDate.setMinutes(scheduledDate.getMinutes()+1);

        const message = {
        body: 'Hey, this worked again!',
        customProperties: {
            testproperty: 'TestValue'
        },
        brokerProperties: {
            ScheduledEnqueueTimeUtc: scheduledDate.toUTCString()
        }
    };
    serviceBusService.sendQueueMessage('myqueue', message, function(error){
        if(!error){
            console.log('We sent a message. Huzzah!');
        }
    });