Documentation

Service extends CatalogService
in package
implements EventSubscriberInterface

Cloud Queues is an open source, scalable, and highly available message and notifications service. Users of this service can create and manage a "producer-consumer" or a "publisher-subscriber" model from one simple API. It is made up of a few basic components: queues, messages, claims, and stats.

In the producer-consumer model, users create queues where producers can post messages. Workers, or consumers, may then claim those messages and delete them once complete. A single claim may contain multiple messages, and administrators are given the ability to query claims for status.

In the publisher-subscriber model, messages are posted to a queue like above, but messages are never claimed. Instead, subscribers, or watchers, simply send GET requests to pull all messages since their last request. In this model, a message will remain in the queue, unclaimed, until the message's time to live (TTL) has expired.

Here is an overview of the Cloud Queues workflow:

  1. You create a queue to which producers post messages.

  2. Producers post messages to the queue.

  3. Workers claim messages from the queue, complete the work in that message, and delete the message.

  4. If a worker plans to be offline before its message completes, the worker can retire the claim TTL, putting the message back into the queue for another worker to claim.

  5. Subscribers monitor the claims of these queues to keep track of activity and help troubleshoot if things go wrong.

For the majority of use cases, Cloud Queues itself will not be responsible for the ordering of messages. If there is only a single producer, however, Cloud Queueing guarantees that messages are handled in a First In, First Out (FIFO) order.

Interfaces, Classes and Traits

EventSubscriberInterface
An EventSubscriber knows itself what events it is interested in.

Table of Contents

DEFAULT_NAME  = 'cloudQueues'
DEFAULT_TYPE  = 'rax:queues'
DEFAULT_URL_TYPE  = 'publicURL'
PATCH_CONTENT_TYPE  = OpenCloudCommonConstantsMime::JSON_PATCH
SUPPORTED_VERSION  = null
$aliases  : array<string|int, mixed>
The aliases configure for the properties of the instance.
$client  : Client
$endpoint  : Endpoint
$namespaces  : array<string|int, mixed>
$regionless  : bool
$resources  : array<string|int, mixed>
$clientId  : string
An arbitrary string used to differentiate your worker/subscriber. This is needed, for example, when you return back a list of messages and want to know the ones your worker is processing.
$logger  : LoggerInterface
The logger instance
$name  : string
$properties  : array<string|int, mixed>
Holds all the properties added by overloading.
$region  : string
$type  : string
$urlType  : string
__call()  : mixed
Intercept non-existent method calls for dynamic getter/setter functionality.
__construct()  : mixed
Creates a service object, based off the specified client.
appendClientIdToRequest()  : mixed
Set the Client-ID header to all requests for this service.
checkJsonError()  : mixed
Checks the most recent JSON operation for errors.
collection()  : mixed
createQueue()  : Queue
Create a new Queue.
generateUuid()  : mixed
getBaseUrl()  : Url
Get the base URL for this service, based on the set URL type.
getClient()  : Client
getClientId()  : string
getEndpoint()  : Endpoint
getExtensions()  : array<string|int, mixed>
Returns the /extensions for the service
getInstance()  : static
getLogger()  : LoggerInterface
Returns the Logger object.
getName()  : string
getNamespaces()  : array<string|int, mixed>
Returns a list of supported namespaces
getQueue()  : Queue
Return an empty Queue.md object.
getRegion()  : string
getResources()  : array<string|int, mixed>
Get all associated resources for this service.
getSubscribedEvents()  : array<string|int, mixed>
Returns an array of event names this subscriber wants to listen to.
getType()  : string
getUrl()  : Url
Returns the URL for the Service
getUrlType()  : string
hasLogger()  : bool
hasQueue()  : bool
This operation checks to see if the specified queue exists.
limits()  : array<string|int, mixed>
Returns the limits for the service
listQueues()  : Collection
This operation lists queues for the project, sorting the queues alphabetically by name.
makeResourceIteratorOptions()  : mixed
name()  : mixed
namespaces()  : mixed
populate()  : mixed
Populates the current object based on an unknown data type.
region()  : mixed
resource()  : object
Factory method for instantiating resource objects.
resourceList()  : PaginatedIterator
Factory method for instantiating a resource collection.
setClient()  : mixed
setClientId()  : $this
setEndpoint()  : mixed
setLogger()  : $this
Sets the logger.
stripNamespace()  : mixed
toCamel()  : mixed
Convert a string to camelCase format.
toUnderscores()  : mixed
Convert string to underscore format.
url()  : mixed
getCurrentNamespace()  : type
Internal method for accessing child namespace from parent scope.
getJsonHeader()  : mixed
getPatchHeaders()  : mixed
getProperty()  : mixed
Grab value out of the data array.
propertyExists()  : bool
Basic check to see whether property exists.
resolveResourceClass()  : string
Resolves FQCN for local resource.
setProperty()  : mixed
We can set a property under three conditions:
checkAttributePrefix()  : bool
Checks the attribute $property and only permits it if the prefix is in the specified $prefixes array
findEndpoint()  : Endpoint
Extracts the appropriate endpoint from the service catalog based on the name and type of a service, and sets for further use.
getMetaUrl()  : stdClass
Constructs a specified URL from the subresource
isAccessible()  : bool
Does the property exist in the object variable list (i.e. does it have public or protected visibility?)

Constants

DEFAULT_NAME

public mixed DEFAULT_NAME = 'cloudQueues'

DEFAULT_TYPE

public mixed DEFAULT_TYPE = 'rax:queues'

PATCH_CONTENT_TYPE

public mixed PATCH_CONTENT_TYPE = OpenCloudCommonConstantsMime::JSON_PATCH

Properties

$aliases

The aliases configure for the properties of the instance.

protected array<string|int, mixed> $aliases = array()

$namespaces

protected array<string|int, mixed> $namespaces = array()

Namespaces for this service.

$regionless

protected bool $regionless = false

Indicates whether a service is "regionless" or not. Defaults to FALSE because nearly all services are region-specific.

$resources

protected array<string|int, mixed> $resources = array()

A collection of resource models that this service has control over.

$clientId

An arbitrary string used to differentiate your worker/subscriber. This is needed, for example, when you return back a list of messages and want to know the ones your worker is processing.

private string $clientId

$name

private string $name

The name of this service, as set in Catalog.

$properties

Holds all the properties added by overloading.

private array<string|int, mixed> $properties = array()

$region

private string $region

The chosen region(s) for this service.

$type

private string $type

The type of this service, as set in Catalog.

$urlType

private string $urlType

Either 'publicURL' or 'internalURL'.

Methods

__call()

Intercept non-existent method calls for dynamic getter/setter functionality.

public __call( $method,  $args) : mixed
Parameters
$method :
$args :
Tags
throws
RuntimeException
Return values
mixed

__construct()

Creates a service object, based off the specified client.

public __construct(Client $client[, string $type = null ][, string $name = null ][, string $region = null ][, string $urlType = null ]) : mixed

The service's URL is defined in the client's serviceCatalog; it uses the $type, $name, $region, and $urlType to find the proper endpoint and set it. If it cannot find a URL in the service catalog that matches the criteria, then an exception is thrown.

Parameters
$client : Client

Client object

$type : string = null

Service type (e.g. 'compute')

$name : string = null

Service name (e.g. 'cloudServersOpenStack')

$region : string = null

Service region (e.g. 'DFW', 'ORD', 'IAD', 'LON', 'SYD' or 'HKG')

$urlType : string = null

Either 'publicURL' or 'internalURL'

Return values
mixed

appendClientIdToRequest()

Set the Client-ID header to all requests for this service.

public appendClientIdToRequest(Event $event) : mixed
Parameters
$event : Event
Return values
mixed

checkJsonError()

Checks the most recent JSON operation for errors.

public static checkJsonError() : mixed
Tags
throws
JsonError
codeCoverageIgnore
Return values
mixed

collection()

public collection(mixed $class[, mixed $url = null ][, mixed $parent = null ][, mixed $data = null ]) : mixed
Parameters
$class : mixed
$url : mixed = null
$parent : mixed = null
$data : mixed = null
Tags
codeCoverageIgnore
Return values
mixed

generateUuid()

public static generateUuid() : mixed
Return values
mixed

getClientId()

public getClientId() : string
Return values
string

getExtensions()

Returns the /extensions for the service

public getExtensions() : array<string|int, mixed>
Return values
array<string|int, mixed>

of objects

getInstance()

public static getInstance() : static
Return values
static

getNamespaces()

Returns a list of supported namespaces

public getNamespaces() : array<string|int, mixed>
Return values
array<string|int, mixed>

getQueue()

Return an empty Queue.md object.

public getQueue([mixed $id = null ]) : Queue
Parameters
$id : mixed = null
Return values
Queue

getRegion()

public getRegion() : string
Return values
string

getResources()

Get all associated resources for this service.

public getResources() : array<string|int, mixed>
Tags
access

public

Return values
array<string|int, mixed>

getSubscribedEvents()

Returns an array of event names this subscriber wants to listen to.

public static getSubscribedEvents() : array<string|int, mixed>

The array keys are event names and the value can be:

  • The method name to call (priority defaults to 0)
  • An array composed of the method name to call and the priority
  • An array of arrays composed of the method names to call and respective priorities, or 0 if unset

For instance:

  • ['eventName' => 'methodName']
  • ['eventName' => ['methodName', $priority]]
  • ['eventName' => [['methodName1', $priority], ['methodName2']]]

The code must not depend on runtime state as it will only be called at compile time. All logic depending on runtime state must be put into the individual methods handling the events.

Return values
array<string|int, mixed>

The event names to listen to

getUrl()

Returns the URL for the Service

public getUrl([string $path = null ][, array<string|int, mixed> $query = array() ]) : Url
Parameters
$path : string = null

URL path segment

$query : array<string|int, mixed> = array()

Array of query pairs

Return values
Url

getUrlType()

public getUrlType() : string
Return values
string

hasLogger()

public hasLogger() : bool
Return values
bool

hasQueue()

This operation checks to see if the specified queue exists.

public hasQueue(string $name) : bool
Parameters
$name : string

The queue name that you want to check

Return values
bool

limits()

Returns the limits for the service

public limits() : array<string|int, mixed>
Return values
array<string|int, mixed>

of limits

listQueues()

This operation lists queues for the project, sorting the queues alphabetically by name.

public listQueues([array<string|int, mixed> $params = array() ]) : Collection
Parameters
$params : array<string|int, mixed> = array()

An associative array of optional parameters:

  • marker (string) Specifies the name of the last queue received in a previous request, or none to get the first page of results. Optional.

  • limit (integer) Specifies up to 20 (the default, but configurable) queues to return. Optional.

  • detailed (bool) Determines whether queue metadata is included in the response. Optional.

Return values
Collection

makeResourceIteratorOptions()

public makeResourceIteratorOptions(mixed $resource) : mixed
Parameters
$resource : mixed
Return values
mixed

name()

public name() : mixed
Tags
deprecated
Return values
mixed

namespaces()

public namespaces() : mixed
Tags
deprecated
Return values
mixed

populate()

Populates the current object based on an unknown data type.

public populate(mixed $info[, mixed $setObjects = true ]) : mixed
Parameters
$info : mixed
$setObjects : mixed = true
Tags
throws
InvalidArgumentError
Return values
mixed

region()

public region() : mixed
Tags
deprecated
Return values
mixed

resource()

Factory method for instantiating resource objects.

public resource(string $resourceName[, mixed $info = null ][, mixed $parent = null ]) : object
Parameters
$resourceName : string
$info : mixed = null

(default: null)

$parent : mixed = null

The parent object

Return values
object

resourceList()

Factory method for instantiating a resource collection.

public resourceList(string $resourceName[, string|null $url = null ][, string|null $parent = null ]) : PaginatedIterator
Parameters
$resourceName : string
$url : string|null = null
$parent : string|null = null
Return values
PaginatedIterator

setClientId()

public setClientId([null $clientId = null ]) : $this
Parameters
$clientId : null = null
Return values
$this

stripNamespace()

public stripNamespace(mixed $namespace) : mixed
Parameters
$namespace : mixed
Return values
mixed

toCamel()

Convert a string to camelCase format.

public toCamel( $string[, bool $capitalise = true ]) : mixed
Parameters
$string :
$capitalise : bool = true

Optional flag which allows for word capitalization.

Return values
mixed

toUnderscores()

Convert string to underscore format.

public toUnderscores( $string) : mixed
Parameters
$string :
Return values
mixed

url()

public url([mixed $path = null ][, array<string|int, mixed> $query = array() ]) : mixed
Parameters
$path : mixed = null
$query : array<string|int, mixed> = array()
Tags
deprecated
Return values
mixed

getCurrentNamespace()

Internal method for accessing child namespace from parent scope.

protected getCurrentNamespace() : type
Return values
type

getJsonHeader()

protected static getJsonHeader() : mixed
Return values
mixed

getPatchHeaders()

protected static getPatchHeaders() : mixed
Return values
mixed

getProperty()

Grab value out of the data array.

protected getProperty(string $property) : mixed
Parameters
$property : string
Return values
mixed

propertyExists()

Basic check to see whether property exists.

protected propertyExists(string $property[, bool $allowRetry = true ]) : bool
Parameters
$property : string

The property name being investigated.

$allowRetry : bool = true

If set to TRUE, the check will try to format the name in underscores because there are sometimes discrepancies between camelCaseNames and underscore_names.

Return values
bool

resolveResourceClass()

Resolves FQCN for local resource.

protected resolveResourceClass( $resourceName) : string
Parameters
$resourceName :
Tags
throws
UnrecognizedServiceError
Return values
string

setProperty()

We can set a property under three conditions:

protected setProperty(mixed $property, mixed $value) : mixed
  1. If it has a concrete setter: setProperty()
  2. If the property exists
  3. If the property name's prefix is in an approved list
Parameters
$property : mixed
$value : mixed
Return values
mixed

checkAttributePrefix()

Checks the attribute $property and only permits it if the prefix is in the specified $prefixes array

private checkAttributePrefix(string $property) : bool

This is to support extension namespaces in some services.

Parameters
$property : string

the name of the attribute

Return values
bool

findEndpoint()

Extracts the appropriate endpoint from the service catalog based on the name and type of a service, and sets for further use.

private findEndpoint() : Endpoint
Tags
throws
EndpointError
Return values
Endpoint

getMetaUrl()

Constructs a specified URL from the subresource

private getMetaUrl(string $resource) : stdClass

Given a subresource (e.g., "extensions"), this constructs the proper URL and retrieves the resource.

Parameters
$resource : string

The resource requested; should NOT have slashes at the beginning or end

Return values
stdClass

object

isAccessible()

Does the property exist in the object variable list (i.e. does it have public or protected visibility?)

private isAccessible( $property) : bool
Parameters
$property :
Return values
bool

Search results