Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.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
C# 未在边缘模块之间路由的消息_C#_Azure Iot Edge - Fatal编程技术网

C# 未在边缘模块之间路由的消息

C# 未在边缘模块之间路由的消息,c#,azure-iot-edge,C#,Azure Iot Edge,更新 更新我的问题以澄清问题 回购: 我有两个模块:MessageGeneratorModule,MessageReceiverModule MessageGeneratorModule发送: 一批1000条消息,然后等待4分钟 每分钟1条信息,持续2分钟 然后每秒发送一条信息,持续一分钟 然后每秒20条信息,持续1分钟 MessageReceiverModule是标准的IoT边缘模块样板代码,它只接收消息并记录消息。我已经删除了向上游发送消息的代码 我在物联网边缘有一个路由配置 {

更新

更新我的问题以澄清问题

回购:

我有两个模块:MessageGeneratorModule,MessageReceiverModule

MessageGeneratorModule发送:
一批1000条消息,然后等待4分钟
每分钟1条信息,持续2分钟
然后每秒发送一条信息,持续一分钟
然后每秒20条信息,持续1分钟

MessageReceiverModule是标准的IoT边缘模块样板代码,它只接收消息并记录消息。我已经删除了向上游发送消息的代码

我在物联网边缘有一个路由配置

{
    "routes": {
        "myRoute": "FROM /messages/modules/messageGenerator/outputs/output INTO BrokeredEndpoint(\"/modules/messageReceiver/inputs/input1\")"
    }
}
我在这里遇到了某种类型的限制,消息似乎没有立即传递给接收者。相反,大约有10-20%的消息被传递。下一组10条消息可以通过发送另一条消息来触发接收器来强制执行。(注意下面的时间戳)

Added Cert:/mnt/edgemodule/edge-device-ca.Cert.pem
连接字符串
IoT集线器模块客户端已初始化。
[12/19/2017 18:27:08]收到消息:1,正文:[1]
[12/19/2017 18:27:08]收到消息:2,正文:[2]
[12/19/2017 18:27:08]收到消息:3,正文:[3]
[12/19/2017 18:27:08]收到消息:4,正文:[4]
[12/19/2017 18:27:08]收到消息:5,正文:[5]
[12/19/2017 18:27:08]收到消息:6,正文:[6]
[12/19/2017 18:27:08]收到消息:7,正文:[7]
[12/19/2017 18:27:08]收到消息:8,正文:[8]
[12/19/2017 18:27:08]收到消息:9,正文:[9]
[12/19/2017 18:27:08]收到消息:10,正文:[10]
[12/19/2017 18:27:08]收到消息:11,正文:[11]
[12/19/2017 18:27:08]收到消息:12,正文:[12]
[12/19/2017 18:27:08]收到消息:13,正文:[13]
[12/19/2017 18:27:08]收到消息:14,正文:[14]
[12/19/2017 18:27:08]收到消息:15,正文:[15]
[12/19/2017 18:27:08]收到消息:16,正文:[16]
[12/19/2017 18:27:08]收到消息:17,正文:[17]
[12/19/2017 18:27:08]收到消息:18,正文:[18]
[12/19/2017 18:27:08]收到消息:19,正文:[19]
[12/19/2017 18:27:08]收到消息:20,正文:[20]
[12/19/2017 18:27:08]收到消息:21,正文:[21]
[12/19/2017 18:30:59]收到信息:22,正文:[22]
[12/19/2017 18:30:59]收到信息:23,正文:[23]
[12/19/2017 18:30:59]收到消息:24,正文:[24]
[12/19/2017 18:30:59]收到信息:25,正文:[25]
[12/19/2017 18:30:59]收到消息:26,正文:[26]
[12/19/2017 18:30:59]收到消息:27,正文:[27]
[12/19/2017 18:30:59]收到消息:28,正文:[28]
[12/19/2017 18:30:59]收到消息:29,正文:[29]
[12/19/2017 18:30:59]收到消息:30,正文:[30]
[12/19/2017 18:30:59]收到消息:31,正文:[31]
[12/19/2017 18:31:59]收到信息:32,正文:[32]
[12/19/2017 18:31:59]收到信息:33,正文:[33]
[12/19/2017 18:31:59]收到消息:34,正文:[34]

其余日志可在回购协议中找到。您应该能够下拉代码并运行它以查看异常情况。

我不确定
\u模块
来自哪里?我的模块(源自官方示例)在MessageHandler方法中使用如下DeviceClient:

DeviceClient deviceClient = (DeviceClient)userContext;
// Build your message
//...
await deviceClient.SendEventAsync("output1", identifiedMessage);

这对你有用吗?

非常感谢你的报道。 您发布的代码对调查该问题有很大帮助。你是对的,这是一个错误。 因此,我在GitHub上打开了这个问题,以便您知道它何时得到修复:

基本上,Edge Hub在一次接收大批量消息时会出现问题。因此,作为一种解决方法,如果您想发送1000条消息,而不是一批发送1000条,那么可以多批发送10条

这只是暂时的,直到我们填补这个问题


[Update]项目已在1.0.0-preview019版本中修复。

\u模块
来自我创建的一个类,用于抽象设备客户端连接。该类具有
DeviceClient.CreateFromConnectionString(\u connectionString,settings)在任何情况下,代码都不会到达
等待模块.SendMessageAsync(identifiedMessage)
向前传递接收到的消息。处理程序应该做的第一件事是将“Message!”记录到控制台。您的代码是否基于IoT客户端SDK?这些模块有一点不同的工作方式。另外,我在中使用的代码使用SendEventAsync(),而您使用SendMessageAsync()是的,我使用文档中的代码作为起点。
SendMessageAsync
是我创建的一个名为
IoEdgeModule
的类中的方法,因此我可以发送字符串,该方法负责在发送消息时将字符串转换为
消息
,并记录到控制台。我最终会有一些模块需要相互通信,因此将用于连接和发送消息的代码放在一个公共库中似乎是正确的想法。我已经更新了帖子,加入了
SendMessageAsync()
method.ok。那么,您可以通过从上下文获取DeviceClient来测试它吗?只是想看看这是否是问题所在。实际上,我在ModuleB上接收消息时遇到了问题,而不是从ModuleB发送消息。原始帖子中的
PipeMessage
方法是ModuleB的接收器。ModuleA没有自己的
管道消息
,因为它不将输入作为消息。ModuleA的唯一职责是抓取文件并发送消息。在这个场景中,ModuleA没有
userContext
,因为这将从接收函数(如PipeMessage)传递。由于ModuleA不需要接收消息,因此它没有
userContext
DeviceClient deviceClient = (DeviceClient)userContext;
// Build your message
//...
await deviceClient.SendEventAsync("output1", identifiedMessage);