我创建了一个在特定时间运行并将 JSON 消息插入存储队列的调度程序。 JSON 消息是固定的,我在调度程序设置期间将其放入 BODY
字段(显示 text/plain
)。消息是:
{ "action": "SendReminderMessages" }
在接收方(WebJob),我轮询队列,然后尝试反序列化这些消息中的 JSON。我得到的不是上面预期的 JSON,而是包装在 XML 消息中的 JSON 消息:
<?xml version="1.0" encoding="utf-16"?>
<StorageQueueMessage xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ExecutionTag>(Some Hex String)</ExecutionTag>
<ClientRequestId>(Some GUID)</ClientRequestId>
<ExpectedExecutionTime>2015-09-17T07:00:00</ExpectedExecutionTime>
<SchedulerJobId>reminder-mails</SchedulerJobId>
<SchedulerJobCollectionId>scheduler-jobs</SchedulerJobCollectionId>
<Region>West Europe</Region>
<Message>{ "action": "SendReminderMessages" }</Message>
</StorageQueueMessage>
如何按原样发送 JSON 消息,即不带信封?
最佳答案
调度程序当前将 XML 包装器添加到正文中,作为传递作业元数据的方法。您可以使用 Scheduler SDK 中的 StorageQueueMessage 类(在 Microsoft.WindowsAzure.Scheduler.Models 下)这将正确地反序列化消息。 您可以投票支持 Azure Scheduler 功能,以添加不包含包装器的功能 Azure Scheduler User Voice forum 。
关于Azure调度程序: Add JSON message to Azure Storage Queue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32624470/