将消息调度到Azure队列的机制

时间:2017-06-22 12:03:31

标签: azure azureservicebus azure-servicebus-queues azure-scheduler azure-monitoring

让我们考虑一个连续将其活动消息作为Q1发送到azure队列的设备。每个消息,我有2个属性,一个是MessageContent,另一个是我们需要将MessageContent推送到另一个消息内容的时间排队为Q2。我的问题是请帮助找到队列之间的间隙(基于时间配置从Q1到Q2触发消息的机制)。

2 个答案:

答案 0 :(得分:2)

Scheduled​Enqueue​Time​Utc类的BrokeredMessage属性是什么。像这样使用它:

var message = new BrokeredMessage(content)
{
    Scheduled​Enqueue​Time​Utc = timeToSend
};
queueClient.Send(message);

因此,如果我理解正确,Q1处理器应该从Q1读取内容和timeToSend并将消息排入Q2,如上所示。

Documentation,请注意这句话:

  

消息获取时间并不意味着消息将被发送到   同一时间。它会入队,但实际的发送时间   取决于队列的工作量及其状态。

答案 1 :(得分:0)

对于核心 3.1, ServiceBusSender 来自 Azure.Messaging.ServiceBus:

var serviceBusMessage = new ServiceBusMessage
{
    ScheduledEnqueueTime = DateTime.UtcNow.AddMilliseconds(30000),
    Body = new BinaryData(message)
};

await sender.SendMessageAsync(serviceBusMessage).ConfigureAwait(false);

您可以使用 ScheduledEnqueueTime 延迟消息传递。