Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以编程方式读取队列';s参数_Java_Google App Engine - Fatal编程技术网

Java 以编程方式读取队列';s参数

Java 以编程方式读取队列';s参数,java,google-app-engine,Java,Google App Engine,我在queue.xml文件中定义了一个队列 <queue-entries> <queue> <name>crawler</name> <rate>1/s</rate> <retry-parameters> ... <task-retry-limit>5</task-retry-limit>

我在
queue.xml
文件中定义了一个队列

<queue-entries>
    <queue>
        <name>crawler</name>
        <rate>1/s</rate>
        <retry-parameters>
            ...
            <task-retry-limit>5</task-retry-limit>
        </retry-parameters>
    </queue>
</queue-entries>

现在,我需要获取给定队列的
任务重试限制
值。可能吗?我还没有在javadoc中找到这样做的方法

看来这是不可能的

如果您查看,您将看到没有定义这样的功能

您可以检索的唯一属性是名称,带有
Queue.getName()


我看不到使用当前appengine api检索它的方法


一种你称之为“黑客”的方法,可能是使用xml库解析
queue.xml
文件,然后手动提取值。

基于@Tim Castelijns的解决方案可以通过编程方式读取和解析文件

我们需要这样做才能工作。当然,您可以使用其他库将XML映射到POJO

示例
queue.xml

<queue-entries>
    <queue>
        <name>crawler</name>
        <rate>1/s</rate>
        <retry-parameters>
            <min-backoff-seconds>10</min-backoff-seconds>
            <max-backoff-seconds>300</max-backoff-seconds>
            <max-doublings>2</max-doublings>
            <task-retry-limit>5</task-retry-limit>
        </retry-parameters>
    </queue>
</queue-entries>
队列条目

import org.simpleframework.xml.Element;
import org.simpleframework.xml.Root;

@Root
public class QueueEntries {

    @Element
    private Queue queue;

    public Queue getQueue() {
        return queue;
    }
}
排队

RetryParameters

import org.simpleframework.xml.Element;

public class RetryParameters {

    @Element(name = "min-backoff-seconds")
    private String minBackoffSeconds;
    @Element(name = "max-backoff-seconds")
    private String maxBackoffSeconds;
    @Element(name = "max-doublings")
    private String maxDoublings;
    @Element(name = "task-retry-limit")
    private String taskRetryLimit;

    public String getMinBackoffSeconds() {
        return minBackoffSeconds;
    }

    public String getMaxDoublings() {
        return maxDoublings;
    }

    public String getMaxBackoffSeconds() {
        return maxBackoffSeconds;
    }

    public String getTaskRetryLimit() {
        return taskRetryLimit;
    }
}

是的,队列接口中确实没有定义重试限制getter。如果可能的话,我正在寻找一种更黑客的方法来获得重试限制。有没有可能获得示例代码,如何将此文件读入内存?根据我以前的经验,所有与文件相关的方法都会在GAE上抛出异常。我已经尝试了所有我想到的方法,包括使用反射读取
QueueImpl
字段,但是现在似乎不可能读取这些值。@tomrozb例如,类似这样的内容我想重要的部分是您正确地获得了xml文件的路径抱歉,也许我的问题不清楚。我不是问如何解析这个文件,而是问如何处理这个文件。根据我的经验,所有与文件系统相关的操作都不允许在GAE上进行。我建议您作为一个新的、单独的问题来问这个问题?因为它与这个问题的主题没有直接关系
import org.simpleframework.xml.Element;
import org.simpleframework.xml.Root;

@Root
public class QueueEntries {

    @Element
    private Queue queue;

    public Queue getQueue() {
        return queue;
    }
}
import org.simpleframework.xml.Element;

public class Queue {

    @Element
    private String rate;
    @Element
    private String name;
    @Element(name = "retry-parameters")
    private RetryParameters retryParameters;

    public String getRate() {
        return rate;
    }

    public String getName() {
        return name;
    }

    public RetryParameters getRetryParameters() {
        return retryParameters;
    }
}
import org.simpleframework.xml.Element;

public class RetryParameters {

    @Element(name = "min-backoff-seconds")
    private String minBackoffSeconds;
    @Element(name = "max-backoff-seconds")
    private String maxBackoffSeconds;
    @Element(name = "max-doublings")
    private String maxDoublings;
    @Element(name = "task-retry-limit")
    private String taskRetryLimit;

    public String getMinBackoffSeconds() {
        return minBackoffSeconds;
    }

    public String getMaxDoublings() {
        return maxDoublings;
    }

    public String getMaxBackoffSeconds() {
        return maxBackoffSeconds;
    }

    public String getTaskRetryLimit() {
        return taskRetryLimit;
    }
}