我正在写POC(概念验证)逻辑应用程序。
逻辑应用程序有一个服务总线连接器连线到队列。
我正在使用peek/complete/abandon。
我写了一个将消息写入队列的客户端应用程序(dotnet c#console app)(与逻辑应用程序部分无关)。
我将Content Type设置为“text/plain”。
string payLoad = @"{ ""myid"": ""1000"", ""mymessage"": ""1000 is great"" , ""myboolean"" : ""true"" }";
QueueClient queueClient = /* not seen here */;
brokeredMsg = new BrokeredMessage(payLoad) { ContentType = System.Net.Mime.MediaTypeNames.Text.Plain };
queueClient.Send(brokeredMsg);
现在我用服务总线资源管理器(4.0.104),我在队列
的问题是,我的逻辑应用程序运行时,它没有看到平原看到消息-text/JSON。
你可以看到它拿起内容类型。
但是,它本身就是内容。
有没有办法用这个触发器获取原始文本?
注意,该文件说:
让我们来看看在不需要转换或 铸造,你可以在一个逻辑应用程序中使用的两个内容类型:应用程序/ JSON和 纯文本/ 。
来自: https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-content-type
https://docs.microsoft.com/en-us/azure/connectors/connectors-create-api-servicebus
我的C#控制台应用程序packages.config(无关的逻辑应用程序,但包括完整性)
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.1.0" targetFramework="net45" />
<package id="WindowsAzure.ServiceBus" version="2.1.4.0" targetFramework="net45" />
</packages>
附加:
我需要做两件事得到它的工作
一:
我不得不稍微改变“发件人”代码。
QueueClient queueClient = /* not seen here */;
string ct = System.Net.Mime.MediaTypeNames.Text.Plain;
/* see https://social.msdn.microsoft.com/Forums/en-US/8fbf2391-8440-46db-bb47-648daccf46fd/servicebus-output-json-is-being-wrapped-in-a-xml-header-in-logic-app?forum=azurelogicapps and https://abhishekrlal.com/2012/03/30/formatting-the-content-for-service-bus-messages/ */
string payLoad = @"{ ""myid"": ""1000"", ""mymessage"": ""1000 is great"" , ""myboolean"" : ""true"" }";
brokeredMsg = new BrokeredMessage(new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(Convert.ToString(payLoad))), true) { ContentType = ct };
queueClient.Send(brokeredMsg);
我用了Derek Li给我的提示。
我已经接受了他的答案作为答案,但请注意我不得不稍微超过他的建议。上面的代码有我改变发件人代码的原因。
简而言之,我使用的BrokeredMessage的构造函数为我选择了一个特定的序列化程序。
BrokeredMessage(对象) 使用的DataContractSerializer用二进制的XmlDictionaryWriter通过 初始化从给定对象的BrokeredMessage类的新实例。
后,我想出了答案,我发现这个答案SOF:
Azure Service Bus Serialization Type
这让我在那里的一半。我正在搞清楚第二部分。 @ string3http://schemas.microsoft.com/2003/10/Serialization/ M{“myid”:“1000”,“mymessage”:“1000 is great”,“myboolean”:“true”} – granadaCoder
我已经附加我的答案,以显示我需要做的除了这个答案。 (强调未来的读者) – granadaCoder