【发布时间】:2019-04-15 02:43:11
【问题描述】:
我在服务总线上设置了一个端点和一条路由,并在查询中使用了这个条件:
$body.Temperature.AlarmPrius = 1
我设置的消息格式是这样的
public async void InvioDati(ProbDATA msgRicevuto)
{
var messageString = JsonConvert.SerializeObject(msgRicevuto);
var message = new Message(Encoding.UTF8.GetBytes(messageString));
message.ContentType = "application/json";
message.ContentEncoding = "utf-8";
await dispositivo.SendEventAsync(message);
}
}
ProbDATA 设置为:
public class ProbDATA
{
public int ID { get; set; }
public int Funzione { get; set; }
/******/
public int Registro_1 { get; set; }
/******/
public int Registro_2 { get; set; }
/******/
public int Registro_3 { get; set; }
/******/
public int Alarm_123 { get; set; }
/******/
public int Registro_4 { get; set; }
/******/
public int Alarm_4 { get; set; }
/******/
public DateTime _TimeStamp { get; set; }
/******/
public override string ToString()
{
return $"Temperature ::ID {ID.ToString()}, Funzione {Funzione.ToString()}, Registro_1 {Registro_1.ToString()}, Registro_2 {Registro_2.ToString()}, Registro_3 {Registro_3.ToString()}, AlarmPrius {Alarm_123.ToString()}, Registro_4 {Registro_4.ToString()}, Alarm_4 {Alarm_4.ToString()}, _TimeStamp {_TimeStamp.ToString("yyyy-MM-dd HH:mm:ss")}";
}
}
但没有消息进入服务总线队列...我知道与我类似的其他主题(我使用 MQTT 连接),他们建议使用 here 等 devices/{yourDeviceId}/messages/events/$.ct=application%2Fjson&$.ce=utf-8 但我该如何实现?有什么例子吗?
【问题讨论】:
-
$body.Temperature.AlarmPrius 与您的 ProbDATA 类不匹配。尝试使用 $body.Alarm_123 = 1
-
使用您的主体(例如 ProbDATA)更新测试/消息主体以用于测试目的(测试路由按钮)。
-
您好 Roman,您的建议已经尝试过,但问题仍然存在,还有一个错误,Alarm_123 中的“1”输入与分配的 1 冲突。这就是为什么我将它重新命名为 AlarmPrius 无论如何我会尝试进一步的测试
-
我刚刚测试了您的有效载荷 ProbDATA 并查询 $body.Alarm_123 = 1,它运行良好。
-
用于测试目的:将查询设置为 true,因此每条消息都应路由到您的服务总线队列。此外,添加一条用于将所有消息(查询为真)转发到内置端点(事件)以在 DeviceExplorer 工具上查看的路由。也可以使用 Service Bus Explorer 工具。
标签: azure-iot-hub azure-servicebus-queues azure-queues