Overview

Namespaces

  • OpenCloud
    • Autoscale
      • Resource
    • CDN
      • Resource
    • CloudMonitoring
      • Collection
      • Exception
      • Resource
    • Common
      • Collection
      • Constants
      • Exceptions
      • Http
        • Message
      • Log
      • Resource
      • Service
    • Compute
      • Constants
      • Exception
      • Resource
    • Database
      • Resource
    • DNS
      • Collection
      • Resource
    • Identity
      • Constants
      • Resource
    • Image
      • Enum
      • Resource
        • JsonPatch
        • Schema
    • LoadBalancer
      • Collection
      • Enum
      • Resource
    • Networking
      • Resource
    • ObjectStore
      • Constants
      • Enum
      • Exception
      • Resource
      • Upload
    • Orchestration
      • Resource
    • Queues
      • Collection
      • Exception
      • Resource
    • Volume
      • Resource
  • PHP

Classes

  • Claim
  • Message
  • Queue
  • Overview
  • Namespace
  • Class
  • Tree
  1: <?php
  2: /**
  3:  * Copyright 2012-2014 Rackspace US, Inc.
  4:  *
  5:  * Licensed under the Apache License, Version 2.0 (the "License");
  6:  * you may not use this file except in compliance with the License.
  7:  * You may obtain a copy of the License at
  8:  *
  9:  * http://www.apache.org/licenses/LICENSE-2.0
 10:  *
 11:  * Unless required by applicable law or agreed to in writing, software
 12:  * distributed under the License is distributed on an "AS IS" BASIS,
 13:  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 14:  * See the License for the specific language governing permissions and
 15:  * limitations under the License.
 16:  */
 17: 
 18: namespace OpenCloud\Queues\Resource;
 19: 
 20: use OpenCloud\Common\PersistentObject;
 21: 
 22: /**
 23:  * A worker claims or checks out a message to perform a task. Doing so prevents
 24:  * other workers from attempting to process the same messages.
 25:  */
 26: class Claim extends PersistentObject
 27: {
 28:     const LIMIT_DEFAULT = 10;
 29:     const GRACE_DEFAULT = 43200;
 30:     const TTL_DEFAULT = 43200;
 31: 
 32:     /**
 33:      * @var string
 34:      */
 35:     private $id;
 36: 
 37:     /**
 38:      * @var int
 39:      */
 40:     private $age;
 41: 
 42:     /**
 43:      * @var array An array of messages.
 44:      */
 45:     private $messages;
 46: 
 47:     /**
 48:      * How long the server should wait before releasing the claim in seconds.
 49:      * The ttl value must be between 60 and 43200 seconds (12 hours is the
 50:      * default but is configurable).
 51:      *
 52:      * @var int
 53:      */
 54:     private $ttl;
 55: 
 56:     /**
 57:      * The message grace period in seconds. The value of grace must be between
 58:      * 60 and 43200 seconds (12 hours the default, but configurable). The server
 59:      * extends the lifetime of claimed messages to be at least as long as the
 60:      * lifetime of the claim itself, plus a specified grace period to deal with
 61:      * crashed workers (up to 1209600 or 14 days including claim lifetime). If a
 62:      * claimed message would normally live longer than the grace period, it's
 63:      * expiration will not be adjusted.
 64:      *
 65:      * @var int
 66:      */
 67:     private $grace;
 68: 
 69:     /**
 70:      * Link.
 71:      *
 72:      * @var string
 73:      */
 74:     private $href;
 75: 
 76:     protected static $url_resource = 'claims';
 77:     protected static $json_name = '';
 78: 
 79:     /**
 80:      * Set the Href attribute and extrapolate the ID.
 81:      *
 82:      * @param $href
 83:      * @return $this
 84:      */
 85:     public function setHref($href)
 86:     {
 87:         $paths = explode('/', $href);
 88:         $this->id = end($paths);
 89:         $this->href = $href;
 90: 
 91:         return $this;
 92:     }
 93: 
 94:     /**
 95:      * @return string
 96:      */
 97:     public function getHref()
 98:     {
 99:         return $this->href;
100:     }
101: 
102:     /**
103:      * @return string
104:      */
105:     public function getId()
106:     {
107:         return $this->id;
108:     }
109: 
110:     public function create($params = array())
111:     {
112:         return $this->noCreate();
113:     }
114: 
115:     /**
116:      * Updates the current Claim. It is recommended that you periodically renew
117:      * claims during long-running batches of work to avoid losing a claim in
118:      * the middle of processing a message. This is done by setting a new TTL for
119:      * the claim (which may be different from the original TTL). The server will
120:      * then reset the age of the claim and apply the new TTL.
121:      * {@inheritDoc}
122:      */
123:     public function update($params = array())
124:     {
125:         $grace = (isset($params['grace'])) ? $params['grace'] : $this->getGrace();
126:         $ttl = (isset($params['ttl'])) ? $params['ttl'] : $this->getGrace();
127: 
128:         $object = (object) array(
129:             'grace' => (int) $grace,
130:             'ttl'   => (int) $ttl
131:         );
132: 
133:         $json = json_encode($object);
134:         $this->checkJsonError();
135: 
136:         return $this->getClient()->patch($this->url(), self::getJsonHeader(), $json)->send();
137:     }
138: }
139: 
API documentation generated by ApiGen 2.8.0