Reputation: 26261
I've got a queue defined in queue.xml
file
<queue-entries>
<queue>
<name>crawler</name>
<rate>1/s</rate>
<retry-parameters>
...
<task-retry-limit>5</task-retry-limit>
</retry-parameters>
</queue>
</queue-entries>
To obtain a queue in Java I'm using simple code
Queue queue = QueueFactory.getQueue("crawler");
Now I need to obtain the task-retry-limit
value for given queue. Is it possible? I haven't found any method to do so in javadoc.
Upvotes: 3
Views: 116
Reputation: 26261
Solution based on @Tim Castelijns answer to read and parse the file programmatically.
SimpleXML in needed for this to work. Of course you can use other library to map XML to POJO.
Sample 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>
How to read value
Serializer serializer = new Persister();
File source = new File("WEB-INF/queue.xml");
QueueEntries queueEntries = serializer.read(QueueEntries.class, source);
int retryLimit = queueEntries.getQueue().getRetryParameters().getTaskRetryLimit());
QueueEntries
import org.simpleframework.xml.Element;
import org.simpleframework.xml.Root;
@Root
public class QueueEntries {
@Element
private Queue queue;
public Queue getQueue() {
return queue;
}
}
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;
}
}
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;
}
}
Upvotes: 0
Reputation: 43334
It appears this is not possible.
If you look at the source code, you will see that there is no such functionality defined.
The only property you can retrieve is the name, with Queue.getName();
I see no way to retrieve it using the current appengine api.
A hacky way as you call it, could be to parse the queue.xml
file with an xml library, and extract the value manually.
Upvotes: 3