我正在尝试使用hono中的数据。为此,请遵循hono文档中关于Starting a consumer的指南。
我目前正在尝试通过在mvn命令末尾添加--tenant.id = *来订阅所有租户。这将导致以下命令:
mvn spring-boot:run -Drun.arguments=--hono.client.host=localhost,--hono.client.username=consumer@HONO,--hono.client.password=verysecret,--destination.TopicTemplate=gw/\!{tenant}/\!{device}/alp,--destination.Hoscalhost,--destination.Port=11883,--tenant.id=*
当我这样订阅时,我没有收到任何消息。当我使用示例命令订阅时(仅适用于DEFAULT_TENANT),我正在使用消息。
当前的用户权限如下所示:
"consumer@HONO": {
"mechanism": "PLAIN",
"password": "verysecret",
"authorities": [ "application" ]
}
当前应用程序角色如下:
"application": [
{
"resource": "telemetry/*",
"activities": [ "READ" ]
},
{
"resource": "event/*",
"activities": [ "READ" ]
},
{
"resource": "control/*",
"activities": [ "READ", "WRITE" ]
}
这两个都是Hono github的原始版本。
编辑:使用者也订阅事件/租户。就我而言,这是事件/ 。消费在主题event / DEFAULT_TENANT和event / MY_TENANT上发布的事件。但是,遥测用户/ 似乎未注册。
答案 0 :(得分:1)
我终于发现发生了什么事。
似乎该消息由于以下错误而在QPID调度路由器中被阻止:“未找到解析树匹配项”。
这可以通过更改qpid配置来解决。在此配置中,您应该能够找到以下记录:
["linkRoute", {
"prefix": "event/",
"direction": "in",
"connection": "broker"
}],
["linkRoute", {
"prefix": "event/",
"direction": "out",
"connection": "broker"
}],
["address", {
"prefix": "telemetry/",
"distribution": "balanced"
}],
它为事件主题而不是遥测主题创建链接路由(输入和输出)。为遥测主题添加这些记录可以解决该问题。
["linkRoute", {
"prefix": "event/",
"direction": "in",
"connection": "broker"
}],
["linkRoute", {
"prefix": "event/",
"direction": "out",
"connection": "broker"
}],
["linkRoute", {
"prefix": "telemetry/",
"direction": "in",
"connection": "broker"
}],
["linkRoute", {
"prefix": "telemetry/",
"direction": "out",
"connection": "broker"
}],
["address", {
"prefix": "telemetry/",
"distribution": "balanced"
}],
答案 1 :(得分:0)
Hono(到目前为止)不支持使用所有租户的消息。消费者始终只限于单个租户。这也反映在Telemetry和Event API规范中。
不支持使用通配符来接收多个/所有租户的数据。您对调度路由器配置所做的更改可能使您相信它确实起作用。但是,定义遥测地址以使用链接路由而不是默认的消息路由有一些后果,您应该注意: