Skip to content

Releases: jakubkulhan/bunny

v0.6.0-alpha.2

10 Nov 19:06
v0.6.0-alpha.2
b0e9af0

Choose a tag to compare

v0.6.0-alpha.2 Pre-release
Pre-release

Since v0.6.0-alpha.1

Non-Breaking Changes:

  • Added support for DSNs

DSN

To make configuration simple, and support existing standards, DSN (configuration by URL) has been added:

use Bunny\Client;
use Bunny\Configuration;

$configuration = Configuration::fromDSN('amqp://USERNAME:PASSWORD@HOSTNAME/VHOST');

$bunny = new Client($configuration);
$bunny->connect();

With TLS support:

use Bunny\Client;
use Bunny\Configuration;

$configuration = Configuration::fromDSN(
    'amqp://USERNAME:PASSWORD@HOSTNAME/VHOST?tls[cafile]=ca.pem&tls[local_cert]=client.cert&tls[local_pk]=client.key',
);

$bunny = new Client($configuration);
$bunny->connect();

======

  • Total issues resolved: 1
  • Total pull requests resolved: 35
  • Total contributors: 5

bug

enhancement

Full 0.6.0 change set so far:

======

  • Total issues resolved: 1
  • Total pull requests resolved: 35
  • Total contributors: 5

bug

enhancement

feature

bug,enhancement

enhancement,feature

v0.6.0-alpha.1

01 Aug 06:01
v0.6.0-alpha.1
5a37f76

Choose a tag to compare

v0.6.0-alpha.1 Pre-release
Pre-release

Non-Breaking Changes:

  • Merged clients into one
  • Marked Client and Channel final through doc block and introduced interfaces for them for unit testing
  • Dropped build in event loop, socket, and stream handling switching to react/event-loop, react/socket, and react/stream for that
  • Partially introduced strict typing and (return) type hints due to all the changes in the code
  • Updated certain generated traits into generated classes
  • Ensured performance didn't regress with these changes
  • Updated all examples, tutorials, and the benchmark. Dropping the async variants due to the merge
  • Introduced Configuration object deprecating using an array for client configuration

Breaking changes:

  • Raised minimum PHP version to 8.1+ unlocking the use of fibers
  • Swapped react/promise v2 with v3
  • Dropped Event Loop injection and replaced it with the global loop accessor
<?php

-use Bunny\Async\Client;
+use Bunny\Client;
-use React\EventLoop\Factory;

require dirname(__DIR__, 2) . '/vendor/autoload.php';

-$loop = Factory::create();

-(new Client($loop))->connect();
+$client = new Client();

-$loop->run();
  • Merged Async and Sync clients into Client utilizing fibers through react/async

Sync

receive.php:

<?php

use Bunny\Channel;
use Bunny\Client;
use Bunny\Message;

require dirname(__DIR__, 2) . '/vendor/autoload.php';

-$client = (new Client())->connect();
+$client = new Client();
$channel = $client->channel();

$channel->queueDeclare('hello', false, false, false, false);

echo ' [*] Waiting for messages. To exit press CTRL+C', "\n";

-$channel->run(
+$channel->consume(
    function (Message $message, Channel $channel) {
        echo " [x] Received ", $message->content, "\n";
    },
    'hello',
    '',
    false,
    true,
);

send.php:

<?php

use Bunny\Client;

require dirname(__DIR__, 2) . '/vendor/autoload.php';

-$client = (new Client())->connect();
+$client = new Client();
$channel = $client->channel();
$channel->queueDeclare('hello', false, false, false, false);
$channel->close();

$channel->publish('Hello World!', [], '', 'hello');
echo " [x] Sent 'Hello World!'\n";

$channel->close();
$client->disconnect();

Async

receive-async.php:

<?php

use Bunny\Channel;
-use Bunny\Async\Client;
+use Bunny\Client;
use Bunny\Message;
-use React\EventLoop\Factory;

require dirname(__DIR__, 2) . '/vendor/autoload.php';

-$loop = Factory::create();

-(new Client($loop))->connect()
+$client = new Client();
-->then(function (Client $client) {
-    return $client->channel();
-})
+$channel = $client->channel();

-->then(function (Channel $channel) {
-    return $channel->queueDeclare('hello', false, false, false, false)->then(function () use ($channel) {
-        return $channel;
-    });
-})
+$channel->queueDeclare('hello', false, false, false, false);

-->then(function (Channel $channel) {
-    echo ' [*] Waiting for messages. To exit press CTRL+C', "\n";
-    $channel->consume(
-        function (Message $message, Channel $channel, Client $client) {
-            echo " [x] Received ", $message->content, "\n";
-        },
-        'hello',
-        '',
-        false,
-        true
-    );
-});
+echo ' [*] Waiting for messages. To exit press CTRL+C', "\n";

+$channel->consume(
+    function (Message $message, Channel $channel) {
+        echo " [x] Received ", $message->content, "\n";
+    },
+    'hello',
+    '',
+    false,
+    true,
+);

-$loop->run();

send-async.php:

<?php

-use Bunny\Channel;
-use Bunny\Async\Client;
+use Bunny\Client;
-use React\EventLoop\Factory;

require dirname(__DIR__, 2) . '/vendor/autoload.php';

-$loop = Factory::create();

-(new Client($loop))->connect()
+$client = new Client();

-->then(function (Client $client) {
-    return $client->channel();
-})
+$channel = $client->channel();

-->then(function (Channel $channel) {
-    return $channel->queueDeclare('hello', false, false, false, false)->then(function () use ($channel) {
-        return $channel;
-    });
-})
+$channel->queueDeclare('hello', false, false, false, false);

-->then(function (Channel $channel) {
-    echo " [x] Sending 'Hello World!'\n";
-    return $channel->publish('Hello World!', [], '', 'hello')->then(function () use ($channel) {
-        return $channel;
-    });
-})
+$channel->publish('Hello World!', [], '', 'hello');

-->then(function (Channel $channel) {
-    echo " [x] Sent 'Hello World!'\n";
-    $client = $channel->getClient();
-    return $channel->close()->then(function () use ($client) {
-        return $client;
-    });
-})
+echo " [x] Sent 'Hello World!'\n";
+$channel->close();

-->then(function (Client $client) {
-    $client->disconnect();
-});
+$client->disconnect();
  • Channel::queueBind arguments string $queue and string $exchange switched argument locations
<?php

use Bunny\Channel;
use Bunny\Client;
use Bunny\Message;

require dirname(__DIR__, 2) . '/vendor/autoload.php';


$client = new Client();
$channel = $client->channel();

$channel->exchangeDeclare('logs', 'fanout');
$queue = $channel->queueDeclare('', false, false, true, false);
-$channel->queueBind($queue->queue, 'logs');
+$channel->queueBind('logs', $queue->queue);

======

  • Total issues resolved: 1
  • Total pull requests resolved: 32
  • Total contributors: 5

enhancement

bug

feature

bug,enhancement

enhancement,feature

v0.5.6

23 May 05:34
v0.5.6
2714c26

Choose a tag to compare

v0.5.5

07 Aug 07:04
v0.5.5
10e34de

Choose a tag to compare

v0.5.5

  • Total issues resolved: 0
  • Total pull requests resolved: 3
  • Total contributors: 3

enhancement

v0.5.4

15 Dec 22:14
v0.5.4
1f6c8f2

Choose a tag to compare

v0.5.4

  • Total issues resolved: 0
  • Total pull requests resolved: 1
  • Total contributors: 1

bug

v0.5.3

12 Dec 21:48
v0.5.3
cd7067e

Choose a tag to compare

v0.5.3

  • Total issues resolved: 0
  • Total pull requests resolved: 2
  • Total contributors: 2

enhancement

v0.5.2

10 Dec 11:00
v0.5.2
5b74a0f

Choose a tag to compare

v0.5.1

19 Dec 21:50
v0.5.1
e03224f

Choose a tag to compare

Removed unused psr/log thanks to @snapshotpl (#117)

v0.5.0

16 Feb 19:00
v0.5.0
9d6be4a

Choose a tag to compare

The release adds PHP 8 support! (Thanks to @edudobay for filing #102)

PHP 8 Logo

Additionally, this release also includes queue clean up between tests by @sanderheijselaar in #103.