Spring Boot中的Apache Camel-根据请求进行队列轮询使用者

问题描述 投票:0回答:1

我正在努力寻找一个完整的示例,说明如何在Spring Boot框架中使用Apache Camel来实现轮询用户的目的。

[我已经看过这个:https://camel.apache.org/manual/latest/polling-consumer.html和这个:https://camel.apache.org/components/latest/timer-component.html,但是代码示例不够广泛,我无法理解完成Java中的任务需要做什么。

我通常是C#开发人员,因此许多对事物的小引用都没有道理。

我正在寻找以下示例以在Java中完成,包括所有导入和使其完全正常运行所需的其他依赖项。

我想做的是,以下

  • 向端点发出Web请求,这将触发轮询使用者的启动
  • 轮询使用者需要使用提供的“ ID”来轮询另一个Web终结点,并在触发时将其发送给使用者。
  • 轮询用户应该每X秒(例如5秒)进行一次轮询。
  • 一旦收到我们正在轮询的端点的特定成功响应,使用者应停止轮询并将消息发送到另一个Web端点。

我想知道这是否可能,如果可以,您能否提供一个实现此目标所需的一切小例子(因为Camel网站上的文档在导入和类结构等方面极为稀疏。 )?

java spring-boot apache-camel polling
1个回答
0
投票

与Java的其他同事讨论之后,他们向我保证,该用例不是Camel设计的用例。这就是为什么在我发布此问题之前很难在互联网上找到任何东西。

对于那些通过Google寻找答案的人,最好的建议方法是使用其他工具或仅使用标准Java。

就我而言,我最终使用普通的旧Java线程来实现所需的功能。收到请求后,我只需启动一个新的Runnable线程即可,该线程负责处理其他服务的结果检查,休眠X秒钟,然后在响应成功时终止。

下面是一个简单的例子:

Runnable runner = new Runnable() {
    @Override
    public void run() {
        boolean cont = true;
        while (cont) {
           cont = getResponseFromServer();
           try {
              Thread.sleep(5000);
           } catch (Exception e) {
              // we don't care about this, it just means this time it didn't sleep
           }
        }
    }
}
new Thread(runner).start();
© www.soinside.com 2019 - 2024. All rights reserved.