title: Difference between param and payload for Google App Engine Pull Queue
body: <p>My project is based on GAE/J and utilizing the recent launched PULL queue, but I think the question can also be applied to Python.</p>
  
  <p>Basically, when I put a task into the PULL queue, I need to set some params of the task for the later consumer to pick it up.</p>
  
  <p>I have implemented in the params setting in both ways:</p>
  
  <p>1) By using <code>param()</code>:</p>
  
  <pre><code>TaskOptions taskOptions = TaskOptions.Builder.
                  withMethod(TaskOptions.Method.PULL);
  taskOptions.param("param", paramValue);
  taskOptions.param("param2", paramValue2);
  </code></pre>
  
  <p>2) By using <code>payload()</code>:</p>
  
  <pre><code>TaskOptions taskOptions = TaskOptions.Builder.
                      withMethod(TaskOptions.Method.PULL);
  taskOptions.payload("payloadValue");
  </code></pre>
  
  <p>Both approaches are working, however, what I would like to know is what's the differences between the two, and which way should be the preferred way in terms of efficiency or convenience.</p>
  
  <p>I can see that by using <code>param()</code>, it is easy to set multiple parameters and also easy to retrieve the parameters for the consumer. 
  But for one parameter cases, then payload may come in more handy as it saves the code to catch Exceptions throwing out when the consumer extract parameters.</p>
  
  <p>However, I would be happy to know any more differences between these two apart from what I have menitoned.</p>