PHP
1 - Install php of version 5.5.0 or above .
2 - Install composer for your system .
3 - go to your directory and install aws-sdk for php using command
composer require aws/aws-sdk-php
4 - You can use the below given Composer command to install the latest version of the AWS SDK for PHP as a dependency.
php -d memory_limit=-1 composer.phar require aws/aws-sdk-php
4- Make a connection with the EQS client.
To make the connection with the EQS client , you need to pass configurations and credentials.
Configurations-
region_name- your_region
endpoint_url - eqs_endpoint_url (provided by e2e networks eqs service)
Credentials-
aws_access_key_id - your_access_key_id aws_secret_key_id - your_secret_key_id
Make connection with EQS
You can make the connection with the EQS client in three ways
a) You can directly pass the credentials and configurations at the time of making a session with the EQS client. warning - Hardcoded credentials in application is not recommended
edit your .php file
<?php
require 'vendor/autoload.php';
use Aws\Credentials\Credentials;
use Aws\Sqs\SqsClient;
$config = [
'region' => “your region”,
'version' => '2012-11-05, //version of sdk
'endpoint' => “end_point_url_to_connect_with_eqs”
];
$credentials = new Credentials('eqs_access_key_id', “eqs_secret_access_key”);
$eqs_client = new SqsClient([
'credentials' => $credentials,
'region' => $config['region'],
'version' => $config['version'],
'endpoint' => $config['endpoint']
]);
?>
b) you can put credentials and configurations in the config and credentials file , and these files should be located at ~/.aws/config, ~/.aws/credentials location.
put into ~/.aws/config file
[default]
region =REGION
put into ~/.aws/credentials file
put into ~/.aws/credentials file
[default]
aws_access_key_id = ACCESS_KEY_ID
aws_secret_access_key = SECRET_KEY
edit your .php file
<?php
require 'vendor/autoload.php';
use Aws\Sqs\SqsClient;
use Aws\Exception\AwsException;
$eqs_client = new SqsClient([
'version'=>'2012-11-05',
'region' => “your_region”,
'endpoint' => “eqs_end_point_url_provided_by_e2e”
]);
?>
c) you can make the connection with the EQS client by passing the credentials and configuration into the environment variables file.
Install the vlucas/phpdotenv package using Composer
composer require vlucas/phpdotenv
using terminal (Linux, OS X or Unix)
$ export AWS_ACCESS_KEY_ID = your_access_key_id
$ export AWS_SECRET_ACCESS_KEY = your_secret_key
$ export AWS_DEFAULT_REGION = your_eqs_region
using terminal (Windows)
> set AWS_ACCESS_KEY_ID = your_access_key_id
> set AWS_SECRET_ACCESS_KEY = your_secret_key
> set AWS_DEFAULT_REGION = your_eqs_region
or, edit your enviourment valiable file
AWS_ACCESS_KEY_ID = your_access_key_id
AWS_SECRET_ACCESS_KEY = your_secret_access_key
AWS_DEFAULT_REGION = your_eqs_region
edit your .php file
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Aws\Sqs\SqsClient;
use Dotenv\Dotenv;
$dotenv = Dotenv::createImmutable(__DIR__);
$dotenv->load();
$eqs_client = new SqsClient([
'version' => '2012-11-05',
'region' => getenv(AWS_REGION'),
'credentials' => [
'key' => getenv('AWS_ACCESS_KEY_ID'),
'secret' => getenv('AWS_SECRET_ACCESS_KEY'),
],
]);
?>
above eqs_client is an object which has all methods related to queue operations.
Methods available in eqs_client
Change VisibilityTimeout
Request Syntax
$result = $eqs_client->changeMessageVisibility([
'QueueUrl' => 'QUEUE_URL',
'ReceiptHandle' => 'RECEIPT_HANDLE',
'VisibilityTimeout' => 123,
]);
Parameters
QueueUrl (string)- [Required]
The URL of the E2E EQS queue whose message's visibility is changed.
ReceiptHandle (string) - [Required]
The receipt handle is associated with the message whose visibility timeout is changed. This parameter is returned by the ReceiveMessage action
VisibilityTimeout (integer) - [Required] The new value for the message's visibility timeout (in seconds)
Response Syntax
null
Change VisibilityTimeout in batch
$result = $eqs_client->changeMessageVisibilityBatch([
'QueueUrl' => 'QUEUE_URL',
'Entries' => [
[
'Id' => 'MESSAGE_ID_1',
'ReceiptHandle' => 'RECEIPT_HANDLE_1',
'VisibilityTimeout' => 123,
],
[
'Id' => 'MESSAGE_ID_2',
'ReceiptHandle' => 'RECEIPT_HANDLE_2',
'VisibilityTimeout' => 456,
],
],
]);
Parameters
QueueUrl (string) - [Required]
The URL of the E2E EQS queue whose message's visibility is changed.
Entries (Array) - [Required] (Associative Array)
id [Required]-(string) An identifier for this particular receipt handle used to communicate the result
ReceiptHandle [Required] -(string) A receipt handle
VisibilityTimeout - (string) The new value (in seconds) for the message’s visibility timeout
Response Syntax
[
'Failed' => [
[
'Code' => '<string>',
'Id' => '<string>',
'Message' => '<string>',
'SenderFault' => true || false,
],
// ...
],
'Successful' => [
[
'Id' => '<string>',
],
// ...
],
]
Create queue
Request Syntax
$params = [
'QueueName' => 'my-queue',
'Attributes' => [
'DelaySeconds' => '0',
'MaximumMessageSize' => '262144',
'MessageRetentionPeriod' => '345600',
'ReceiveMessageWaitTimeSeconds' => '0',
'VisibilityTimeout' => '30',
],
'tags' => [
'Department' => 'Finance',
],
];
// Create the queue
$result = $eqs_client->createQueue($params);
Parameters
QueueName (string)- [Required] 1 - A queue name can have up to 80 characters
2 - Valid values: alphanumeric characters, hyphens ( -), and underscores ( _).
Attributes (associative array)- Attributes could be
1 - DelaySeconds - Time(second), to which extent delivery of messages is delayed in the queue
Valid values - 0 to 900 (second)
default - 0 (second)
2 - MaximumMessageSize - The size of the message after which the queue will reject the message
Valid values - 1,024 bytes (1 KiB) to 262,144 bytes (256 KiB)
default - 262,144 bytes(256 KiB)
3 - MessageRetentionPeriod - Time to which extent a queue will retain a message
Valid values - 60 seconds (1 minute) to 1,209,600 seconds (14 days)
default - 345,600 (4 days)
4 - ReceiveMessageWaitTimeSeconds - Time to which extent ReceiveMessage action waits before receiving a message
Valid values - 0 to 20 (seconds)
default - 0 (second)
5 - VisibilityTimeout - The amount of time that a message in a queue is invisible to other consumers after a consumer retrieves it.
Valid values - 0 to 43,200 seconds (12 hours)
default - 30 second
tags (associative array) -
1 - Adding more than 50 tags to a queue isn't recommended.
2 - A new tag with a key identical to that of an existing tag overwrites the existing tag.
Response Syntax
{ 'QueueUrl': 'string' }
Delete message
Request Syntax
$eqs_client->deleteMessage([
'QueueUrl' => 'QUEUE_URL',
'ReceiptHandle' => 'RECEIPT_HANDLE',
]);
Parameters
QueueUrl (string) - [Required] The URL of the E2E EQS queue from which messages are deleted.
ReceiptHandle (string) - [Required] The receipt handle is associated with the message to delete.
Response Syntax
null
Delete message in batch
Request Syntax
$result = $eqs_client->deleteMessageBatch([
'QueueUrl' => 'QUEUE_URL',
'Entries' => [
[
'Id' => 'MESSAGE_ID_1',
'ReceiptHandle' => 'RECEIPT_HANDLE_1',
],
[
'Id' => 'MESSAGE_ID_2',
'ReceiptHandle' => 'RECEIPT_HANDLE_2',
]
]
]);
Parameters
QueueUrl (string) - [Required] The URL of the E2E EQS queue from which messages are deleted.
Entries (Array) - [Required] (associative array) id [Required]-(string) An identifier for this particular receipt handle used to communicate the result ReceiptHandle [Required] -(string) A receipt handle
Response Syntax
[
'Successful' => [
[
'Id' => 'string',
],
// Additional successful entries
],
'Failed' => [
[
'Id' => 'string',
'SenderFault' => true || false,
'Code' => 'string',
'Message' => 'string',
],
// Additional failed entries
],
]
Delete queue
Request Syntax
$result = $eqs_client->deleteQueue(array(
// QueueUrl is required
'QueueUrl' => 'string',
));
Parameters
QueueUrl (string) - [Required]
The URL of the E2E EQS queue to delete.
Response Syntax
null
Get queue attributes
Request Syntax
$params = [
'QueueUrl' => 'QUEUE_URL',
'AttributeNames' => ['All'], // Or specify specific attributes as an array
];
// Call the operation
$result = $sqsClient->getQueueAttributes($params);
Parameters
QueueUrl (string) - [Required] The URL of the E2E EQS queue from which attributes are get.
AttributeNames (Array) - [Optional] A list of attributes for which to retrieve information
All - it specifies, returns all values
you can also specify specific attributes in the list
As - ['VisibilityTimeout' , 'MaximumMessageSize' , 'MessageRetentionPeriod' , 'ApproximateNumberOfMessages' ,'ApproximateNumberOfMessagesNotVisible' , 'CreatedTimestamp' , 'LastModifiedTimestamp' , 'QueueArn' , 'ApproximateNumberOfMessagesDelayed' , 'DelaySeconds' , 'ReceiveMessageWaitTimeSeconds']
Response Syntax
[
'Attributes' => ['<string>', ...],
]
Get queue url
Request Syntax
$result = $eqs_client->getQueueUrl([
'QueueName' => '<string>', // REQUIRED
]);
Parameters
QueueName (string) -[Required] The name of the queue whose URL must be fetched.
Response Syntax
[
'QueueUrl' => '<string>',
]
List queue tags
Request Syntax
$result = $eqs_client->listQueueTags([
'QueueUrl' => 'string',
]);
Parameters
QueueUrl (string) - [Required] The URL of the E2E EQS queue of which all the tags must be listed.
Response Syntax
[
'Tags' => ['<string>', ...],
]
List queues
Request Syntax
$result = $eqs_client->listQueues([
'MaxResults' => <integer>,
'NextToken' => '<string>',
'QueueNamePrefix' => '<string>',
]);
Parameters QueueNamePrefix (string) - [Optional] A string to use for filtering the list results. Only those queues whose name begins with the specified string are returned.
NextToken (string) - Pagination token to request the next set of results.
MaxResults (integer) - [Optional] The maximum number of results to include in the response. Valid values - 1 to 1000
Response Syntax
[
'NextToken' => '<string>',
'QueueUrls' => ['<string>', ...],
]
Purge queue
delete all the messages from queue.
Request Syntax
$result = $eqs_client->purgeQueue([
'QueueUrl' => '<string>', // REQUIRED
]);
Parameters
QueueUrl (string) - [Required] The URL of the E2E EQS queue of which all the messages must be deleted.
Response Syntax
null
Receive message
$result = $eqs_client->receiveMessage([
'AttributeNames' => ['<string>', ...],
'MaxNumberOfMessages' => <integer>,
'MessageAttributeNames' => ['<string>', ...],
'QueueUrl' => '<string>', // REQUIRED
'ReceiveRequestAttemptId' => '<string>',
'VisibilityTimeout' => <integer>,
'WaitTimeSeconds' => <integer>,
]);
Parameters
QueueUrl (string) - [Required] The URL of the E2E EQS queue from which messages are received.
AttributeNames (Array) - A list of attributes that need to be returned along with each message.
All - it specifies, returns all values
you can also specify specific attributes in the list
As - ['VisibilityTimeout' , 'MaximumMessageSize' , 'MessageRetentionPeriod' , 'ApproximateNumberOfMessages' ,'ApproximateNumberOfMessagesNotVisible' , 'CreatedTimestamp' , 'LastModifiedTimestamp' , 'QueueArn' , 'ApproximateNumberOfMessagesDelayed' , 'DelaySeconds' , 'ReceiveMessageWaitTimeSeconds']
MessageAttributeNames (Array) - The name of the message attribute.
MaxNumberOfMessages (integer) - The maximum number of messages to return.
Valid range - 1 to 10
default - 1
VisibilityTimeout (integer) - The duration (in seconds) that the received messages are hidden from subsequent retrieve requests after being retrieved by a ReceiveMessage request.
WaitTimeSeconds (integer) - The duration (in seconds) for which the call waits for a message to arrive in the queue before returning.
Response Syntax
[
'Messages' => [
[
'Attributes' => ['<string>', ...],
'Body' => '<string>',
'MD5OfBody' => '<string>',
'MD5OfMessageAttributes' => '<string>',
'MessageAttributes' => [
'<String>' => [
'BinaryListValues' => [<string || resource || Psr\Http\Message\StreamInterface>, ...],
'BinaryValue' => <string || resource || Psr\Http\Message\StreamInterface>,
'DataType' => '<string>',
'StringListValues' => ['<string>', ...],
'StringValue' => '<string>',
],
// ...
],
'MessageId' => '<string>',
'ReceiptHandle' => '<string>',
],
// ...
],
]
Send message
Request Syntax
$result = $eqs_client->sendMessage([
'DelaySeconds' => <integer>,
'MessageAttributes' => [
'<String>' => [
'DataType' => '<string>', // REQUIRED
'StringListValues' => ['<string>', ...],
'StringValue' => '<string>',
],
// ...
],
'MessageBody' => '<string>', // REQUIRED
'MessageDeduplicationId' => '<string>',
'MessageGroupId' => '<string>',
'MessageSystemAttributes' => [
'<MessageSystemAttributeNameForSends>' => [
'DataType' => '<string>', // REQUIRED
'StringListValues' => ['<string>', ...],
'StringValue' => '<string>',
],
// ...
],
'QueueUrl' => '<string>', // REQUIRED
]);
Parameters
QueueUrl (string) - [Required] The URL of the E2E EQS queue to which messages are send.
MessageBody (string) - [Required] The message to send. The minimum size is one character. The maximum size is 256 KB.
DelaySeconds (integer) - The length of time, in seconds, for which to delay a specific message.
MessageAttributes (associative array) - Each message attribute consists of a Name, Type, and Value .
Name, type, value and the message body must not be empty or null .
(string) - name of the message attributes
(associative array) - Value of message attributes
1 - StringValue (string) - Strings are Unicode with UTF-8 binary encoding.
2 - BinaryValue (bytes) - Binary type attributes can store any binary data, such as compressed data, encrypted data, or images.
(string) - [Required] Type of message attributes
EQS support the following data type
Binary, Number, String
MessageSystemAttributes (associative array) - Each message system attribute consists of a Name, Type, and Value.
The name, type, value and message body must not be empty or null.
(string) - the name of the message attributes
(associative array) - Value of message attributes
1 - StringValue (string) - Strings are Unicode with UTF-8 binary encoding.
2 - BinaryValue (bytes) - Binary type attributes can store any binary data, such as compressed data, encrypted data, or images.
(string) - Type of message attributes
EQS support the following data type
Binary , Number , String
Response Syntax
[
'MD5OfMessageAttributes' => '<string>',
'MD5OfMessageBody' => '<string>',
'MD5OfMessageSystemAttributes' => '<string>',
'MessageId' => '<string>',
'SequenceNumber' => '<string>',
]
Send message in batch
Request Syntax
$result = $eqs_client->sendMessageBatch([
'Entries' => [ // REQUIRED
[
'DelaySeconds' => <integer>,
'Id' => '<string>', // REQUIRED
'MessageAttributes' => [
'<String>' => [
'DataType' => '<string>', // REQUIRED
'StringListValues' => ['<string>', ...],
'StringValue' => '<string>',
],
// ...
],
'MessageBody' => '<string>', // REQUIRED
'MessageDeduplicationId' => '<string>',
'MessageGroupId' => '<string>',
'MessageSystemAttributes' => [
'<MessageSystemAttributeNameForSends>' => [
'DataType' => '<string>', // REQUIRED
'StringListValues' => ['<string>', ...],
'StringValue' => '<string>',
],
// ...
],
],
// ...
],
'QueueUrl' => '<string>', // REQUIRED
]);
Parameters
QueueUrl (string) - [Required] The URL of the E2E EQS queue to which messages are sent.
Entries (Array) - [Required] A list of SendMessageBatchRequestEntry items.
(Associative array) -
Contains the details of a single E2E EQS message along with an Id.
Id (string) - [REQUIRED] An identifier for a message in this batch is used to communicate the result.
MessageBody (string) - [Required] The message to send. The minimum size is one character. The maximum size is 256 KB.
DelaySeconds (integer) - The length of time, in seconds, for which to delay a specific message.
MessageAttributes (associative array) - Each message attribute consists of a Name, Type, and Value.
The Name, type, value and message body must not be empty or null.
(string) - The name of the message attributes
(associative array) - Value of message attributes
1 - StringValue (string) - Strings are Unicode with UTF-8 binary encoding.
2 - BinaryValue (bytes) - Binary type attributes can store any binary data, such as compressed data, encrypted data, or images.
(string) -[Required] Type of message attributes
EQS support the following data type
Binary, Number, String
MessageSystemAttributes (associative array) - Each message system attribute consists of a Name, Type, and Value.
Name, type, value and the message body must not be empty or null.
(string) - The name of the message attributes
(associative array) - Value of message attributes
1 - StringValue (string) - Strings are Unicode with UTF-8 binary encoding.
2 - BinaryValue (bytes) - Binary type attributes can store any binary data, such as compressed data, encrypted data, or images.
(string) - Type of message attributes
EQS support following data type
Binary , Number , String
Response Syntax
[
'Failed' => [
[
'Code' => '<string>',
'Id' => '<string>',
'Message' => '<string>',
'SenderFault' => true || false,
],
// ...
],
'Successful' => [
[
'Id' => '<string>',
'MD5OfMessageAttributes' => '<string>',
'MD5OfMessageBody' => '<string>',
'MD5OfMessageSystemAttributes' => '<string>',
'MessageId' => '<string>',
'SequenceNumber' => '<string>',
],
// ...
],
]
Tag queue
Request Syntax
$result = $eqs_client->tagQueue([
'QueueUrl' => '<string>', // REQUIRED
'Tags' => ['<string>', ...], // REQUIRED
]);
Parameters
QueueUrl (string) - [Required] The URL of the E2E EQS queue.
Tags (associative array) - [Required] The list of tags to be added to the specified queue.
Response Syntax
null
Untag queue
Request Syntax
$result = $eqs_client->untagQueue([
'QueueUrl' => '<string>', // REQUIRED
'TagKeys' => ['<string>', ...], // REQUIRED
]);
Parameters
QueueUrl (string) - [Required] The URL of the E2E EQS queue.
TagKeys (Array) - [Required] The list of tags to be removed from the specified queue.
Response Syntax
null