【问题标题】:Health check API for message-driven beans消息驱动 bean 的健康检查 API
【发布时间】:2018-11-20 11:23:07
【问题描述】:

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

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

编辑

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

【问题讨论】:

  • 您的应用服务器通常会管理 MDB 实例池和数据库连接,向 MDB 添加检查并没有真正的帮助,因为您只会检查一个实例(并在占用资源的同时你正在这样做)。大多数应用服务器会提供一个 JMX 接口来监控这些资源,但可用信息取决于服务器。
  • @NickWilson 我认为检查一个实例就足以验证所有实例。如果我可以从一个 EJB 访问(ping)资源,那么他们很有可能都能够这样做,因为绑定和注入都可以。我已经编辑了我的问题,以便更明确地说明我想要验证的内容以及为什么我认为我需要从 EJB 内部进行验证。

标签: rest jakarta-ee ejb-3.1 message-driven-bean


【解决方案1】:

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

但是您可以反过来做,将一些类注入到 MDB 中,您可以根据收到的任何消息调用该类。这样一来,只要您不断收到消息,您就会有一个持续的“我还活着”的 ping。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-24
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-02
    • 2021-09-13
    • 2019-11-03
    相关资源
    最近更新 更多