https://github.com/starcode-solutions/yii2-amqp
AMQP extension
https://github.com/starcode-solutions/yii2-amqp
ampq yii2-extension
Last synced: 3 months ago
JSON representation
AMQP extension
- Host: GitHub
- URL: https://github.com/starcode-solutions/yii2-amqp
- Owner: starcode-solutions
- Created: 2015-07-23T14:38:34.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2016-10-26T20:26:58.000Z (over 8 years ago)
- Last Synced: 2024-10-01T00:23:36.993Z (7 months ago)
- Topics: ampq, yii2-extension
- Language: PHP
- Size: 24.4 KB
- Stars: 3
- Watchers: 5
- Forks: 4
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# yii2-amqp
[](https://packagist.org/packages/starcode-krasnodar/yii2-amqp) [](https://packagist.org/packages/starcode-krasnodar/yii2-amqp) [](https://packagist.org/packages/starcode-krasnodar/yii2-amqp) [](https://packagist.org/packages/starcode-krasnodar/yii2-amqp)
Extension Yii2 for working with AMQP protocol
# installation
Via composercomposer require "starcode/yii2-amqp:2.*"
or add composer.json```json
{
"require": {
"starcode/yii2-amqp": "2.*"
}
}
```# configuration
Create amqp component config```php
[
'components' => [
'amqp' => [
'class' => 'starcode\amqp\components\Connection',
'host' => 'localhost',
'user' => 'guest',
'password' => 'guest',
'connectionOptions' => [
'vhost' => '/',
],
'queuesConfig' => [
'email' => [
'queue' => 'email',
'durable' => true,
'auto_delete' => false,
],
'logs' => [
'queue' => 'logs',
'durable' => true,
'auto_delete' => false,
],
],
],
],
];
```# usage
Publish message.```php
// get queue object
$queue = Yii::$app->get('amqp')->getQueue('email');// create message object
$message = new Message('my message', ['delivery_mode' => 2]);// publish message
$queue->publish($message);
```Listen messages
```php
// get queue object
$queue = Yii::$app->get('amqp')->getQueue('email');// callback listener function
$callback = function($message) {
echo $message->body;
// acknowledge message
$channel = $msg->delivery_info['channel'];
$channel->basic_ack($msg->delivery_info['delivery_tag']);
};$queue->consume([
'callback' => $callback,
]);$channel = $queue->getChannel();
while (count($channel->callbacks)) {
$channel->wait();
}
```