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

Camel多次使用来自同一URI的PollRelch返回空正文

齐健柏
2023-03-14

我有两条路线。第一条路由使用poll enrich检查文件是否存在。第二条路由使用相同uri上的轮询丰富来读取和处理文件。第一条路由通过SEDA队列调用第二条路由,如下所示:

public void configure() throws Exception {
    String myFile = "file://myDir?fileName=MyFile.zip&delete=false&readLock=none";

    from("direct:test")
       .pollEnrich(myFile, 10000)
    .to("seda:myQueue")
    ;

    from("seda:myQueue")
        .pollEnrich(myFile, 10000)
        .log("Do something with the body")
    ;
}

照目前的情况,如果我执行第一条路由,则轮询充实将找到一个文件,但当第二条路由中的轮询充实执行时,它将返回一个空体。如果我只是单独执行第二条路由,它就会正确地检索文件。

为什么第二轮投票丰富返回空,文件锁定了吗?(我希望使用noop、readLock和delete=false的组合可以防止任何锁定)

您可能会奇怪为什么我要尝试从两条路由中进行丰富,第一条路由必须检查是否存在多个文件,只有当所有文件都存在时(即pollrelch不返回null),第二条路由才能开始处理它们。

有没有什么替代花粉的方法可以让我使用?我想也许我需要创建一个bean,它通过URI检索文件并将其作为正文返回。

我使用的是骆驼2.11.0

共有1个答案

胡鸿羲
2023-03-14

我意识到这是一个老话题了,但我刚刚遇到了一个类似的问题。
我建议您尝试以下选项:

noop=true

你已经有了,而且

idempotent=false

要告诉camelOK处理同一文件两次是OK

测试后更新:

我实际上用上面建议的两种设置测试了它,它有时工作,但在中等负载下,它失败了,即对某些交换返回空体,尽管不是全部。

 类似资料:
  • 此页返回一个空摘要: https://fr.wikipedia.org/w/api.php?action=query 但同样的查询适用于其他页面:https://fr.wikipedia.org/w/api.php?action=query 添加“ 我做错什么了吗?

  • 问题内容: 是否有可能具有两个返回的函数,如下所示: 如果是这样,我如何才能分别获得每份退货? 问题答案: 无法返回两个变量。虽然,您 可以 传播一个数组并返回它;创建条件以返回动态变量,等等。 例如,此函数将返回 在应用中: 如果您都想要它们,可以稍微修改一下功能

  • 问题内容: 我没有任何例外,但是当我跑步时… 然后,deckFile.read()返回-1。该文件位于正确的文件夹中,并且不为空。 这应该是世界上最容易的事情。 编辑:AssetManager实际上确实在那里列出“ cards.txt”,所以这不应该是问题。 问题答案: 问题是我的文件太大,并且由于扩展名为“ .txt”而被压缩了。通过将文件重命名为通常已压缩的格式“ .mp3”,就没有问题

  • 我想创建自己的Camel组件。基于组件http4。默认情况下,我只想插入服务器和端口。所以我可以写: 我的组件将URI更改为“http://myhost:8080/test1.php”和“http://myhost:808080/test2.php”,但我无法创建自己的方案名称。我在类中测试@UriEndpoint(scheme=“myhttp”) 你可以帮我吗? 我做什么:

  • 我想使用ManagedBean类Users。java,创建两个具有不同作用域的bean实例。我尝试了两种方法: 1.为用户使用ManagedBean和SessionScope注释(这将创建一个带有会话范围的用户),并在faces-config.xml声明另一个来自用户的MenagedBean,带有请求范围。 注意:“组件”来自Spring框架,暂时可以忽略。 在faces-config.xml:

  • 我已经发布了一个请求,并在postman上测试它,响应在postman和android logcat上正确返回,但在改型时,它在正文中返回null 下面是响应的模型 当我发送请求时,响应将获得null响应,而errorbody内容将获得以下内容 [size=99 text={\r\n“errors”:{\r\n“driversapi”:[\r\n“order alredy assig…] 下面是预