Communicate with an SQS queue from inside your symfony 2 application.
This bundle is an extension of lelivrescolaire/AWSBundle.
$ composer require "lelivrescolaire/sqs-bundle:dev-master"
AppKernel:
public function registerBundles()
{
$bundles = array(
new LLS\Bundle\AWSBundle\LLSAWSBundle(),
new LLS\Bundle\SQSBundle\LLSSQSBundle(),
);
}
llsaws:
identities:
my_identity: # Arbitrary Identity service name
type: user # Identity type name (factory alias)
fields: # Identity fields
key: '<user AWS key>'
secret: '<user AWS secret>'
region: '<region of the SQS queue>'
endpoint: '<endpoint to plug elasticMQ or other third services; not required>'
services:
my_sqs_service: # Arbitrary service name
type: sqs # Service Type (factory alias)
identity: my_identity
llssqs:
queues:
my_queue: # Arbitrary Queue service name
service: my_sqs_service # SQS Service name
name: myQueue # AWS Queue name
Given the previous config:
<?php
namespace Acme\Bundle\MyBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use LLS\Bundle\SQSBundle\Model\Queue;
use LLS\Bundle\SQSBundle\Model\Message;
class MyController extends Controller
{
public function myAction()
{
$identityAsService = $this->get('llsaws.identities.my_identity');
$sqsAsService = $this->get('llsaws.services.my_sqs_service');
$queueAsService = $this->get('llssqs.queues.my_queue');
// Create a queue
$queue = $sqsAsService->getQueue('myCreatedQueue'); // Instanciate Queue
$sqsAsService->createQueue($queue); // Remotely create the queue
var_dump($queue->getUrl()); // Get queue URL
// Send a message to a queue
$message = new Message();
$message->setBody('Hello world!');
$queueAsService->sendMessage($message);
// Fetch messages from a queue
$maxMsg = 10; // Max number of messages to fetch
$messages = $queueAsService->fetchMessages($maxMsg);
foreach ($messages as $message) {
var_dump($message->getBody());
$queueAsService->delete($message); // Delete message (only works for fetched Messages)
}
}
}
See here.
Feel free to send us Pull Requests and Issues with your fixs and features.
$ ./bin/atoum
$ ./bin/coke