You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Eclipse Hono MongoDB设备注册HTTP API间歇性返回text/html 404咨询

环境
  • Eclipse Hono 2.7.0(eclipsehono/hono-service-device-registry-mongodb)
  • 同时在2.6.0版本测试→行为一致
  • MongoDB 6.0
  • Quarkus 3.8.4(嵌入Hono)
  • 运行环境:Ubuntu 22.04和macOS上的Docker Compose
  • 问题在两种环境均可复现

问题

HTTP管理API(端口28080)会间歇性返回404响应,Content-Type为text/html,呈现一致的轮询模式。

示例行为:

  • GET /v1/tenants/airechemistry → 404(text/html)
  • GET /v1/tenants/airechemistry → 404(text/html)
  • GET /v1/tenants/airechemistry → 200(application/json)
  • GET /v1/tenants/airechemistry → 200(application/json)

该模式会持续重复。

在CPU核心更多(即Vert.x事件循环线程更多)的机器上,失败率会上升。例如,10个线程时仅约2个返回正确响应→失败率约80%。


观察/证据

1. Content-Type表明路由级故障

404响应返回:

Content-Type: text/html
<html><body><h1>Resource not found</h1></body></html>

200响应返回:

Content-Type: application/json

关键细节:

  • text/html是无匹配路由时Vert.x的默认响应
  • Hono自身的错误处理始终返回JSON

结论:
部分HTTP服务器实例处理请求时未注册任何路由。


2. 路由注册日志

启动时日志:

(main) registering endpoint [v1/tenants]
(main) registering endpoint [v1/tenants]

(thread-0) starting endpoint [name: v1/tenants]
(thread-1) starting endpoint [name: v1/tenants]

路由似乎在主线程注册,但事件循环线程上的HTTP服务器行为不一致。


3. 响应在MongoDB查询前发送

日志显示:

07:38:41,623  thread-0: HTTP 404 sent
07:38:41,638  thread-0: retrieving tenant

这证明:

  • 404并非因MongoDB中缺少数据导致
  • 路由在处理器执行前返回

4. AMQP端点未受影响

  • 通过AMQP进行的凭证查询(MQTT适配器使用)100%正常工作
  • 问题仅局限于HTTP层

5. GET和POST请求均受影响

  • 租户创建和查询均呈现相同故障模式
  • 与读写操作无关

已尝试的解决方法

以下操作均未解决问题:

  • HONO_REGISTRY_HTTP_AUTHENTICATIONREQUIRED=false → 无变化
  • HONO_APP_MAXINSTANCES=1 → 情况更糟(约75%失败率)
  • HONO_REGISTRY_HTTP_INSTANCES=1 → 情况更糟
  • QUARKUS_VERTX_PREFER_NATIVE_TRANSPORT=false → 无变化
  • QUARKUS_VERTX_EVENT_LOOPS_POOL_SIZE=1 → 无变化
  • MongoDB超时配置(QUARKUS_MONGODB_*)→ 无效果
  • HONO_MONGODB_SERVERSELECTIONTIMEOUTINMS=30000 → 无效果
  • 升级至Hono 2.7.0 → 行为一致

总结
  • HTTP请求有时会被未注册任何路由的Vert.x实例处理
  • 故障行为随事件循环线程数量增加而恶化
  • 问题具有确定性且可复现
  • 与MongoDB、认证或AMQP无关

咨询问题

这是否是Eclipse Hono/Quarkus/Vert.x初始化阶段的已知问题,即路由未正确绑定到所有事件循环线程?

或者是否需要特定配置以确保所有HTTP服务器实例的路由注册一致?


内容的提问来源于stack exchange,提问作者Vishal C

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 13:33:15