Skip to content

Add some handy functions. Improve READMEs #92

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 18, 2017
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 51 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -8,7 +8,7 @@ This is where all development happens. The repository provides a friendly enviro
Features:

* [JMS](https://docs.oracle.com/javaee/7/api/javax/jms/package-summary.html) like transport [abstraction](https://github.com/php-enqueue/psr-queue).
* Feature rich.
* [Feature rich](docs/quick_tour.md).
* Supports transports:
- [AMQP](docs/transport/amqp.md) (RabbitMQ, ActiveMQ and others),
- [STOMP](docs/transport/stomp.md)
@@ -18,7 +18,56 @@ Features:
- [Filesystem](docs/transport/filesystem.md)
- [Null](docs/transport/null.md).
* Generic purpose abstraction level (the transport level).

```php
<?php
use function Enqueue\dsn_to_context;
use function Enqueue\send_queue;
use function Enqueue\consume;
use Enqueue\Psr\PsrMessage;
use Enqueue\Consumption\Result;

// composer require enqueue/enqueue enqueue/amqp-ext

$c = dsn_to_context('amqp:://');

send_queue($c, 'a_queue', 'Hello there');

consume($c, 'a_queue', function(PsrMessage $message) {
$body = $message->getBody();

// to stop consumption: throw new \Enqueue\Consumption\Exception\ConsumptionInterruptedException;

return Result::ACK;
});
```

* Easy to use abstraction level (the client level).

```php
<?php
use Enqueue\SimpleClient\SimpleClient;
use Enqueue\Psr\PsrMessage;
use Enqueue\Consumption\Result;

// composer require enqueue/simple-client enqueue/fs

$client = new SimpleClient('file://');
$client->bind('a_topic', 'a_processor', function(PsrMessage $message) {
$body = $message->getBody();

// to stop consumption: throw new \Enqueue\Consumption\Exception\ConsumptionInterruptedException;

return Result::ACK;
});

$client->setupBroker();

$client->send('a_topic', 'Hello there');

$client->consume();
```

* [Symfony bundle](https://github.com/php-enqueue/enqueue-dev/blob/master/docs/bundle/quick_tour.md)
* [Magento1 extension](https://github.com/php-enqueue/enqueue-dev/blob/master/docs/magento/quick_tour.md)
* [Message bus](http://www.enterpriseintegrationpatterns.com/patterns/messaging/MessageBus.html) support.
@@ -30,6 +79,7 @@ Features:

## Resources

* [Quick tour](https://github.com/php-enqueue/enqueue-dev/blob/master/docs/quick_tour.md)
* [Documentation](https://github.com/php-enqueue/enqueue-dev/blob/master/docs/index.md)
* [Questions](https://gitter.im/php-enqueue/Lobby)
* [Issue Tracker](https://github.com/php-enqueue/enqueue-dev/issues)
1 change: 1 addition & 0 deletions pkg/enqueue-bundle/README.md
Original file line number Diff line number Diff line change
@@ -9,6 +9,7 @@ Integrates message queue components to Symfony application.

## Resources

* [Quick tour](https://github.com/php-enqueue/enqueue-dev/blob/master/docs/bundle/quick_tour.md)
* [Documentation](https://github.com/php-enqueue/enqueue-dev/blob/master/docs/index.md)
* [Questions](https://gitter.im/php-enqueue/Lobby)
* [Issue Tracker](https://github.com/php-enqueue/enqueue-dev/issues)
40 changes: 40 additions & 0 deletions pkg/enqueue/functions.php
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@
namespace Enqueue;

use Enqueue\AmqpExt\AmqpConnectionFactory;
use Enqueue\Consumption\QueueConsumer;
use Enqueue\Fs\FsConnectionFactory;
use Enqueue\Null\NullConnectionFactory;
use Enqueue\Psr\PsrConnectionFactory;
@@ -56,3 +57,42 @@ function dsn_to_context($dsn)
{
return dsn_to_connection_factory($dsn)->createContext();
}

/**
* @param PsrContext $c
* @param string $topic
* @param string $body
*/
function send_topic(PsrContext $c, $topic, $body)
{
$topic = $c->createTopic($topic);
$message = $c->createMessage($body);

$c->createProducer()->send($topic, $message);
}

/**
* @param PsrContext $c
* @param string $queue
* @param string $body
*/
function send_queue(PsrContext $c, $queue, $body)
{
$queue = $c->createQueue($queue);
$message = $c->createMessage($body);

$c->createProducer()->send($queue, $message);
}

/**
* @param PsrContext $c
* @param string $queue
* @param callable $callback
*/
function consume(PsrContext $c, $queue, callable $callback)
{
$queueConsumer = new QueueConsumer($c);
$queueConsumer->bind($queue, $callback);

$queueConsumer->consume();
}