A Java Task Queue Example

The following code adds a task to a queue with options.

In index.html :

 <!-- A basic index.html file served from the "/" URL. -->
<html>
<body>
<p>Enqueue a value, to be processed by a worker.</p>
<form action="/enqueue" method="post">
    <input type="text" name="key">
    <input type="submit">
</form>
</body>
</html> 

In Enqueue.java :

  // The Enqueue servlet should be mapped to the "/enqueue" URL. 
 // With @WebServlet annotation the webapp/WEB-INF/web.xml is no longer required. 
 @WebServlet 
 ( 
  
 name 
  
 = 
  
 "TaskEnque" 
 , 
  
 description 
  
 = 
  
 "taskqueue: Enqueue a job with a key" 
 , 
  
 urlPatterns 
  
 = 
  
 "/taskqueues/enqueue" 
 ) 
 public 
  
 class 
 Enqueue 
  
 extends 
  
 HttpServlet 
  
 { 
  
 protected 
  
 void 
  
 doPost 
 ( 
 HttpServletRequest 
  
 request 
 , 
  
 HttpServletResponse 
  
 response 
 ) 
  
 throws 
  
 ServletException 
 , 
  
 IOException 
  
 { 
  
 String 
  
 key 
  
 = 
  
 request 
 . 
 getParameter 
 ( 
 "key" 
 ); 
  
 // Add the task to the default queue. 
  
 Queue 
  
 queue 
  
 = 
  
 QueueFactory 
 . 
 getDefaultQueue 
 (); 
  
 queue 
 . 
 add 
 ( 
 TaskOptions 
 . 
 Builder 
 . 
 withUrl 
 ( 
 "/worker" 
 ). 
 param 
 ( 
 "key" 
 , 
  
 key 
 )); 
  
 response 
 . 
 sendRedirect 
 ( 
 "/" 
 ); 
  
 } 
 } 
 

In Worker.java :

  // The Worker servlet should be mapped to the "/worker" URL. 
 // With @WebServlet annotation the webapp/WEB-INF/web.xml is no longer required. 
 @WebServlet 
 ( 
  
 name 
  
 = 
  
 "TaskWorker" 
 , 
  
 description 
  
 = 
  
 "TaskQueues: worker" 
 , 
  
 urlPatterns 
  
 = 
  
 "/taskqueues/worker" 
 ) 
 public 
  
 class 
 Worker 
  
 extends 
  
 HttpServlet 
  
 { 
  
 private 
  
 static 
  
 final 
  
 Logger 
  
 log 
  
 = 
  
 Logger 
 . 
 getLogger 
 ( 
 Worker 
 . 
 class 
 . 
 getName 
 ()); 
  
 protected 
  
 void 
  
 doPost 
 ( 
 HttpServletRequest 
  
 request 
 , 
  
 HttpServletResponse 
  
 response 
 ) 
  
 throws 
  
 ServletException 
 , 
  
 IOException 
  
 { 
  
 String 
  
 key 
  
 = 
  
 request 
 . 
 getParameter 
 ( 
 "key" 
 ); 
  
 // Do something with key. 
  
 // ... 
  
 } 
 } 
 

Tasks added to this queue will execute by calling the request handler at the URL /worker with the parameter key . They will execute at the rate set in the queue.xml file, or the default rate of 5 tasks per second.

Create a Mobile Website
View Site in Mobile | Classic
Share by: