当前位置: 首页 > 知识库问答 >
问题:

消息驱动bean的健康检查API

席波娃
2023-03-14

我希望能够在生产环境中对已部署的消息驱动Bean进行健康检查。我最初的想法是添加一个health()方法,确保JMS队列(用于读取)和数据库(用于写入)都可用,然后将此health方法作为REST API公开。不幸的是,由于MDB不像其他类型的EJB那样是可注入的,我无法从我的REST控制器获取对它的引用。。。

有没有办法通过REST API公开消息驱动bean的方法?或者有没有其他方法来实现我最初的目标?

编辑

精确一点:我不想只检查资源是否可用,还想检查EJB是否可以与它们通信(通过从EJB实例内部ping它们)。这不仅会验证资源是否可用(这确实可以通过其他方式实现),而且对我来说更重要的是,资源绑定是否有效,资源注入是否有效。

共有1个答案

梁福
2023-03-14

我认为这不可能是你想要的方式。原因是,与其他EJB不同,MDB仅在消息到达时起作用,而不是通过对消息的任何其他调用。

但是你可以反过来做,向MDB注入一些类,你可以调用你收到的任何消息。这样,只要你连续收到消息,你就会有一个恒定的“我还活着”ping。

除此之外,您唯一的机会是使用容器的机制,这些机制通常可以提供有关其已部署和正在运行的组件的一些信息,您可以查询这些信息。

 类似资料:
  • SOFABoot 为 Spring Boot 的健康检查能力增加了 Readiness Check 的能力。如果你需要使用 SOFA 中间件,那么建议使用 SOFABoot 的健康检查能力的扩展,来更优雅的上线应用实例 引入健康检查扩展 要引入 SOFABoot 的健康检查能力的扩展,只需要引入以下的 Starter 即可: <dependency> <groupId>com.alipay

  • 健康检查配置概述。 filter.http.HealthCheck filter.http.HealthCheck proto { "pass_through_mode": "{...}", "endpoint": "...", "cache_time": "{...}" } pass_through_mode (BoolValue, REQUIRED) 指定过滤器是否在传递模式下运

  • 健康检查架构概述。如果为集群配置了健康检查,则会发出相应的统计信息。详见请参考统计相关文档。 HealthCheck HealthCheck.Payload HealthCheck.HttpHealthCheck HealthCheck.TcpHealthCheck HealthCheck.RedisHealthCheck HealthCheck HealthCheck proto { "ti

  • 健康检查架构概述。 如果为集群配置了健康检查,则会发出相应的统计信息。并且记录在这里。 { "type": "...", "timeout_ms": "...", "interval_ms": "...", "unhealthy_threshold": "...", "healthy_threshold": "...", "path": "...", "send": [

  • 健康检查配置概述。 { "name": "health_check", "config": { "pass_through_mode": "...", "endpoint": "...", "cache_time_ms": "..." } } pass_through_mode (required, boolean) 指定过滤器是否在通过模式下运行。 end

  • 健康检查架构概述 如果为集群配置了健康检查,则会触发其他统计信息。详见这里文档。 v1 API文档 v2 API文档 TCP健康检查 注意:本文是为v1 API编写的,但这些概念也适用于v2 API。它将在未来版本中使用v2 API重写。 执行的匹配类型如下(这是MongoDB运行健康检查请求和响应): { "send": [ {"binary": "39000000"},