【问题标题】:Is there a listener like facility in web service?Web 服务中是否有类似设施的监听器?
【发布时间】:2020-01-11 11:06:09
【问题描述】:

我是 Spring Boot 和 REST 概念的新手,我不确定如何在我的 Web 应用程序中实现侦听器类型的功能。 我正在开发一个需要每小时向第三方 Web 应用程序发送数据的 Spring Boot Web 应用程序。我的网络应用程序从外部“接收”一个带有 JSON 字符串正文的 PUT 调用。我需要注册传入的人员详细信息并启动一个线程(我猜这是否正确),每小时通过 POST/PUT 将某些数据发送到第 3 方 Web 应用程序。每次发送详细信息之前,我需要对第 3 方 Web 应用程序进行 GET 调用,以确保此人在第 3 方 Web 应用程序中仍然处于活动状态。

下面是我想到的伪逻辑。

  1. 我的 Web 应用程序收到来自第 3 方 Web 应用程序的 PUT 调用。
  2. 解析 JSON 并注册 Person。 (我可以做到这一步)
  3. 在 while 循环中,检查 Person 在 3rd 方 Web 应用程序中是否处于活动状态(GET 调用)
  4. 如果处于活动状态,则将详细信息发送到第 3 方 Web 应用程序(PUT 调用)
  5. 否则停止发送详细信息。

我需要有关如何在我的 Web 应用程序中实现侦听器类型的工具的帮助。 编辑:我遇到了 Java 的 ExecutorService 和线程池的概念。

【问题讨论】:

  • 这些伪逻辑与侦听器有什么关系?
  • 我会推荐一个使用 Rabbit MQ 的基于消息的解决方案。将这些线程和细节保留在您的 REST 服务之外。他们不属于那里。
  • @duffymo 由于涉及到第 3 方 Web 应用程序(我的客户端组织),我没有发言权要求他们更改 Rabbit MQ。我相信我需要为每个传入的请求创建新线程并有一个侦听器来检查 Person 的活动状态
  • 你当然可以选择。你的信念涉及你对如何解决这个问题的假设。我建议还有另一种方法。在您实施某些事情之前,您可以选择。

标签: java spring rest spring-boot web-applications


【解决方案1】:

我认为通过 feign 客户端可以轻松做到。 https://cloud.spring.io/spring-cloud-netflix/multi/multi_spring-cloud-feign.html

【讨论】:

  • 感谢您的领导。我还遇到了 Java 的 ExecutorService 和线程池的概念。我试试看
【解决方案2】:

经过进一步研究,我发现了 Java 的 Executor Service 和 Thread Pool。我相信这会达到我的目的

【讨论】:

    猜你喜欢
    • 2017-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 1970-01-01
    相关资源
    最近更新 更多