Fiware Orion CB 订阅节流
Fiware Orion CB subscriptions throttling
我创建了这个订阅:
curl localhost:1026/v2/subscriptions -s -S -H 'Accept: application/json' | python -mjson.tool
[
{
"description": "Update room temperature",
"expires": "2020-04-05T14:00:00.00Z",
"id": "5b104ace028f2284c5517f51",
"notification": {
"attrs": [
"temperature"
],
"attrsFormat": "normalized",
"http": {
"url": "http://MyUrl/getSub"
},
"lastNotification": "2018-05-31T19:19:42.00Z",
"metadata": [
"5b019ae132232812eccb6d50",
"device",
"16",
"Auto",
"30",
"greater"
],
"timesSent": 1
},
"status": "active",
"subject": {
"condition": {
"attrs": [
"temperature"
]
},
"entities": [
{
"id": "5aff0eef23102126a4aeeea2",
"type": "room"
}
]
},
"throttling": 60
}
即使我已将节流设置为 60(如果我理解正确,则为 1 分钟),当我更改温度值时,即使更改发生在一分钟标记之前,orion 也会向我发送通知(例如,我每 10 秒更改一次温度值)。是否应该仅在 60 秒后发生更改时才发送通知,或者我理解有误?
您所描述的似乎是正确的行为。我的意思是,如果订阅有 60 秒的限制,您应该不会收到任何新的通知,直到从上一个通知过去 60 秒。
可能的原因:
- 您有另一个正在触发的订阅。但我知道情况并非如此,因为这样的订阅应该显示在
GET /v2/subscriptions
结果中。
- Orion 中存在导致节流被忽略的错误。在这种情况下,使用使用 NGSIv1(使用
POST /v1/subscribeContext
)创建的订阅进行相同的测试以了解错误的影响范围会很有趣。
我创建了这个订阅:
curl localhost:1026/v2/subscriptions -s -S -H 'Accept: application/json' | python -mjson.tool
[
{
"description": "Update room temperature",
"expires": "2020-04-05T14:00:00.00Z",
"id": "5b104ace028f2284c5517f51",
"notification": {
"attrs": [
"temperature"
],
"attrsFormat": "normalized",
"http": {
"url": "http://MyUrl/getSub"
},
"lastNotification": "2018-05-31T19:19:42.00Z",
"metadata": [
"5b019ae132232812eccb6d50",
"device",
"16",
"Auto",
"30",
"greater"
],
"timesSent": 1
},
"status": "active",
"subject": {
"condition": {
"attrs": [
"temperature"
]
},
"entities": [
{
"id": "5aff0eef23102126a4aeeea2",
"type": "room"
}
]
},
"throttling": 60
}
即使我已将节流设置为 60(如果我理解正确,则为 1 分钟),当我更改温度值时,即使更改发生在一分钟标记之前,orion 也会向我发送通知(例如,我每 10 秒更改一次温度值)。是否应该仅在 60 秒后发生更改时才发送通知,或者我理解有误?
您所描述的似乎是正确的行为。我的意思是,如果订阅有 60 秒的限制,您应该不会收到任何新的通知,直到从上一个通知过去 60 秒。
可能的原因:
- 您有另一个正在触发的订阅。但我知道情况并非如此,因为这样的订阅应该显示在
GET /v2/subscriptions
结果中。 - Orion 中存在导致节流被忽略的错误。在这种情况下,使用使用 NGSIv1(使用
POST /v1/subscribeContext
)创建的订阅进行相同的测试以了解错误的影响范围会很有趣。