├── .gitignore ├── LICENSE ├── README.md ├── composer.json ├── etc └── modules │ └── Enqueue_Enqueue.xml ├── shell └── enqueue.php └── src └── Enqueue └── Enqueue ├── Helper └── Data.php ├── Model └── Config │ ├── Field │ └── Transportdefault.php │ └── Source │ ├── Redis │ └── Vendor.php │ └── Transport.php └── etc ├── adminhtml.xml ├── config.xml └── system.xml /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | /composer.lock 3 | /composer.phar 4 | /phpunit.xml 5 | /vendor/ 6 | /.idea/ 7 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Maksym Kotliar 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Magento Enqueue extension 2 | 3 | [![Gitter](https://badges.gitter.im/php-enqueue/Lobby.svg)](https://gitter.im/php-enqueue/Lobby) 4 | [![Total Downloads](https://poser.pugx.org/enqueue/magento-enqueue/d/total.png)](https://packagist.org/packages/enqueue/magento-enqueue) 5 | [![Latest Stable Version](https://poser.pugx.org/enqueue/magento-enqueue/version.png)](https://packagist.org/packages/enqueue/magento-enqueue) 6 | 7 | The extension adds messaging capabilities to Magento application. 8 | 9 | ## Resources 10 | 11 | * [Enqueue Documentation](https://github.com/php-enqueue/enqueue-dev/blob/master/docs/index.md) 12 | * [Extension Documenation](https://github.com/php-enqueue/enqueue-dev/blob/master/docs/magento/quick_tour.md) 13 | * [Questions](https://gitter.im/php-enqueue/Lobby) 14 | * [Issue Tracker](https://github.com/php-enqueue/enqueue-dev/issues) 15 | 16 | ## Developed by Forma-Pro 17 | 18 | Forma-Pro is a full stack development company which interests also spread to open source development. 19 | Being a team of strong professionals we have an aim an ability to help community by developing cutting edge solutions in the areas of e-commerce, docker & microservice oriented architecture where we have accumulated a huge many-years experience. 20 | Our main specialization is Symfony framework based solution, but we are always looking to the technologies that allow us to do our job the best way. We are committed to creating solutions that revolutionize the way how things are developed in aspects of architecture & scalability. 21 | 22 | If you have any questions and inquires about our open source development, this product particularly or any other matter feel free to contact at opensource@forma-pro.com 23 | 24 | ## License 25 | 26 | It is released under the [MIT License](LICENSE). 27 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "enqueue/magento-enqueue", 3 | "type": "magento-module", 4 | "description": "Message Queue solutions for Magento. Supports RabbitMQ, AMQP, STOMP, Amazon SQS, Kafka, Redis, Google PubSub, Gearman, Beanstalk", 5 | "license": "MIT", 6 | "keywords": ["messaging", "queue", "amqp", "magento", "rabbitmq", "kafka", "redis", "sqs", "google-pubsub", "amazon-sqs", "gearman", "beanstalk"], 7 | "require": { 8 | "enqueue/enqueue": "^0.8", 9 | "enqueue/simple-client": "^0.8" 10 | }, 11 | "extra":{ 12 | "map": [ 13 | ["src/Enqueue", "app/code/local/Enqueue"], 14 | ["etc/modules/Enqueue_Enqueue.xml", "app/etc/modules/Enqueue_Enqueue.xml"], 15 | ["shell/enqueue.php", "shell/enqueue.php"] 16 | ] 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /etc/modules/Enqueue_Enqueue.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | true 6 | local 7 | 8 | 9 | -------------------------------------------------------------------------------- /shell/enqueue.php: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env php 2 | bindProcessors(); 26 | 27 | /** @var \Enqueue\SimpleClient\SimpleClient $client */ 28 | $client = $enqueue->getClient(); 29 | 30 | $application = new Application(); 31 | $application->add(new SetupBrokerCommand($client->getDriver())); 32 | $application->add(new ProduceMessageCommand($client->getProducer())); 33 | $application->add(new QueuesCommand($client->getQueueMetaRegistry())); 34 | $application->add(new TopicsCommand($client->getTopicMetaRegistry())); 35 | $application->add(new ConsumeMessagesCommand( 36 | $client->getQueueConsumer(), 37 | $client->getDelegateProcessor(), 38 | $client->getQueueMetaRegistry(), 39 | $client->getDriver() 40 | )); 41 | 42 | $application->run(); 43 | -------------------------------------------------------------------------------- /src/Enqueue/Enqueue/Helper/Data.php: -------------------------------------------------------------------------------- 1 | $config) { 21 | if (empty($config['topic'])) { 22 | throw new \LogicException(sprintf('Topic name is not set for processor: "%s"', $name)); 23 | } 24 | 25 | if (empty($config['helper'])) { 26 | throw new \LogicException(sprintf('Helper name is not set for processor: "%s"', $name)); 27 | } 28 | 29 | $this->getClient()->bind($config['topic'], $name, function () use ($config) { 30 | $processor = Mage::helper($config['helper']); 31 | 32 | if (false == $processor instanceof PsrProcessor) { 33 | throw new \LogicException(sprintf('Expects processor is instance of: "%s"', PsrProcessor::class)); 34 | } 35 | 36 | return call_user_func_array([$processor, 'process'], func_get_args()); 37 | }); 38 | } 39 | } 40 | 41 | /** 42 | * @param string $topic 43 | * @param string|array|Message $message 44 | */ 45 | public function send($topic, $message) 46 | { 47 | $this->getProducer()->send($topic, $message); 48 | } 49 | 50 | /** 51 | * @return \Enqueue\Client\ProducerInterface 52 | */ 53 | public function getProducer() 54 | { 55 | return $this->getClient()->getProducer(); 56 | } 57 | 58 | /** 59 | * @return SimpleClient 60 | */ 61 | public function getClient() 62 | { 63 | if (null === $this->client) { 64 | $this->client = new SimpleClient($this->buildConfig()); 65 | } 66 | 67 | return $this->client; 68 | } 69 | 70 | /** 71 | * @return array 72 | */ 73 | public function buildConfig() 74 | { 75 | $config = $this->getClientConfig(); 76 | $config['transport'] = []; 77 | 78 | switch ($name = Mage::getStoreConfig('enqueue/transport/default')) { 79 | case 'rabbitmq_amqp': 80 | $config['transport'] = $this->getRabbitMqAmqpConfig(); 81 | break; 82 | case 'amqp': 83 | $config['transport'] = $this->getAmqpConfig(); 84 | break; 85 | case 'stomp': 86 | $config['transport'] = $this->getStompConfig(); 87 | break; 88 | case 'rabbitmq_stomp': 89 | $config['transport'] = $this->getRabbitMqStompConfig(); 90 | break; 91 | case 'fs': 92 | $config['transport'] = $this->getFsConfig(); 93 | break; 94 | case 'sqs': 95 | $config['transport'] = $this->getSqsConfig(); 96 | break; 97 | case 'redis': 98 | $config['transport'] = $this->getRedisConfig(); 99 | break; 100 | case 'dbal': 101 | $config['transport'] = $this->getDbalConfig(); 102 | break; 103 | default: 104 | throw new \LogicException(sprintf('Unknown transport: "%s"', $name)); 105 | } 106 | 107 | return $config; 108 | } 109 | 110 | /** 111 | * @return array 112 | */ 113 | public function getClientConfig() 114 | { 115 | return ['client' => [ 116 | 'prefix' => Mage::getStoreConfig('enqueue/client/prefix'), 117 | 'app_name' => Mage::getStoreConfig('enqueue/client/app_name'), 118 | 'router_topic' => Mage::getStoreConfig('enqueue/client/router_topic'), 119 | 'router_queue' => Mage::getStoreConfig('enqueue/client/router_queue'), 120 | 'default_processor_queue' => Mage::getStoreConfig('enqueue/client/default_processor_queue'), 121 | 'redelivered_delay_time' => (int) Mage::getStoreConfig('enqueue/client/redelivered_delay_time'), 122 | ]]; 123 | } 124 | 125 | /** 126 | * @return array 127 | */ 128 | public function getRabbitMqAmqpConfig() 129 | { 130 | return ['rabbitmq_amqp' => [ 131 | 'host' => Mage::getStoreConfig('enqueue/rabbitmq_amqp/host'), 132 | 'port' => (int) Mage::getStoreConfig('enqueue/rabbitmq_amqp/port'), 133 | 'user' => Mage::getStoreConfig('enqueue/rabbitmq_amqp/user'), 134 | 'pass' => Mage::getStoreConfig('enqueue/rabbitmq_amqp/pass'), 135 | 'vhost' => Mage::getStoreConfig('enqueue/rabbitmq_amqp/vhost'), 136 | 'lazy' => (bool) Mage::getStoreConfig('enqueue/rabbitmq_amqp/lazy'), 137 | ]]; 138 | } 139 | 140 | /** 141 | * @return array 142 | */ 143 | public function getAmqpConfig() 144 | { 145 | return ['amqp' => [ 146 | 'host' => Mage::getStoreConfig('enqueue/amqp/host'), 147 | 'port' => (int) Mage::getStoreConfig('enqueue/amqp/port'), 148 | 'user' => Mage::getStoreConfig('enqueue/amqp/user'), 149 | 'pass' => Mage::getStoreConfig('enqueue/amqp/pass'), 150 | 'vhost' => Mage::getStoreConfig('enqueue/amqp/vhost'), 151 | 'lazy' => (bool) Mage::getStoreConfig('enqueue/amqp/lazy'), 152 | ]]; 153 | } 154 | 155 | /** 156 | * @return array 157 | */ 158 | public function getStompConfig() 159 | { 160 | return ['stomp' => [ 161 | 'host' => Mage::getStoreConfig('enqueue/stomp/host'), 162 | 'port' => (int) Mage::getStoreConfig('enqueue/stomp/port'), 163 | 'login' => Mage::getStoreConfig('enqueue/stomp/login'), 164 | 'password' => Mage::getStoreConfig('enqueue/stomp/password'), 165 | 'vhost' => Mage::getStoreConfig('enqueue/stomp/vhost'), 166 | 'lazy' => (bool) Mage::getStoreConfig('enqueue/stomp/lazy'), 167 | ]]; 168 | } 169 | 170 | /** 171 | * @return array 172 | */ 173 | public function getRabbitMqStompConfig() 174 | { 175 | return ['rabbitmq_stomp' => [ 176 | 'host' => Mage::getStoreConfig('enqueue/rabbitmq_stomp/host'), 177 | 'port' => (int) Mage::getStoreConfig('enqueue/rabbitmq_stomp/port'), 178 | 'login' => Mage::getStoreConfig('enqueue/rabbitmq_stomp/login'), 179 | 'password' => Mage::getStoreConfig('enqueue/rabbitmq_stomp/password'), 180 | 'vhost' => Mage::getStoreConfig('enqueue/rabbitmq_stomp/vhost'), 181 | 'lazy' => (bool) Mage::getStoreConfig('enqueue/rabbitmq_stomp/lazy'), 182 | 'delay_plugin_installed' => (bool) Mage::getStoreConfig('enqueue/rabbitmq_stomp/delay_plugin_installed'), 183 | 'management_plugin_installed' => (bool) Mage::getStoreConfig('enqueue/rabbitmq_stomp/management_plugin_installed'), 184 | 'management_plugin_port' => (int) Mage::getStoreConfig('enqueue/rabbitmq_stomp/management_plugin_port'), 185 | ]]; 186 | } 187 | 188 | /** 189 | * @return array 190 | */ 191 | public function getFsConfig() 192 | { 193 | return ['fs' => [ 194 | 'store_dir' => Mage::getStoreConfig('enqueue/fs/store_dir'), 195 | 'pre_fetch_count' => (int) Mage::getStoreConfig('enqueue/fs/pre_fetch_count'), 196 | 'chmod' => intval(Mage::getStoreConfig('enqueue/fs/chmod'), 8), 197 | ]]; 198 | } 199 | 200 | /** 201 | * @return array 202 | */ 203 | public function getSqsConfig() 204 | { 205 | return ['sqs' => [ 206 | 'key' => Mage::getStoreConfig('enqueue/sqs/key'), 207 | 'secret' => Mage::getStoreConfig('enqueue/sqs/secret'), 208 | 'token' => Mage::getStoreConfig('enqueue/sqs/token'), 209 | 'region' => Mage::getStoreConfig('enqueue/sqs/region'), 210 | 'retries' => (int) Mage::getStoreConfig('enqueue/sqs/retries'), 211 | 'lazy' => (bool) Mage::getStoreConfig('enqueue/sqs/lazy'), 212 | ]]; 213 | } 214 | 215 | /** 216 | * @return array 217 | */ 218 | public function getRedisConfig() 219 | { 220 | return ['redis' => [ 221 | 'host' => Mage::getStoreConfig('enqueue/redis/host'), 222 | 'port' => (int) Mage::getStoreConfig('enqueue/redis/port'), 223 | 'vendor' => Mage::getStoreConfig('enqueue/redis/vendor'), 224 | 'lazy' => (bool) Mage::getStoreConfig('enqueue/redis/lazy'), 225 | ]]; 226 | } 227 | 228 | /** 229 | * @return array 230 | */ 231 | public function getDbalConfig() 232 | { 233 | return ['dbal' => [ 234 | 'connection' => [ 235 | 'url' => Mage::getStoreConfig('enqueue/dbal/url'), 236 | ], 237 | 'table_name' => Mage::getStoreConfig('enqueue/dbal/table_name'), 238 | 'polling_interval' => (int) Mage::getStoreConfig('enqueue/dbal/polling_interval'), 239 | 'lazy' => (bool) Mage::getStoreConfig('enqueue/dbal/lazy'), 240 | ]]; 241 | } 242 | } 243 | -------------------------------------------------------------------------------- /src/Enqueue/Enqueue/Model/Config/Field/Transportdefault.php: -------------------------------------------------------------------------------- 1 | getValue(); 19 | 20 | $data = [ 21 | 'rabbitmq_amqp' => [ 22 | 'name' => 'RabbitMQ AMQP', 23 | 'package' => 'enqueue/amqp-ext', 24 | 'class' => AmqpContext::class, 25 | ], 26 | 'amqp' => [ 27 | 'name' => 'AMQP', 28 | 'package' => 'enqueue/amqp-ext', 29 | 'class' => AmqpContext::class, 30 | ], 31 | 'rabbitmq_stomp' => [ 32 | 'name' => 'RabbitMQ STOMP', 33 | 'package' => 'enqueue/stomp', 34 | 'class' => StompContext::class, 35 | ], 36 | 'stomp' => [ 37 | 'name' => 'STOMP', 38 | 'package' => 'enqueue/stomp', 39 | 'class' => StompContext::class, 40 | ], 41 | 'fs' => [ 42 | 'name' => 'Filesystem', 43 | 'package' => 'enqueue/fs', 44 | 'class' => FsContext::class, 45 | ], 46 | 'sqs' => [ 47 | 'name' => 'Amazon AWS SQS', 48 | 'package' => 'enqueue/sqs', 49 | 'class' => SqsContext::class, 50 | ], 51 | 'redis' => [ 52 | 'name' => 'Redis', 53 | 'package' => 'enqueue/redis', 54 | 'class' => RedisContext::class, 55 | ], 56 | 'dbal' => [ 57 | 'name' => 'Doctrine DBAL', 58 | 'package' => 'enqueue/dbal', 59 | 'class' => DbalContext::class, 60 | ], 61 | ]; 62 | 63 | if (false == isset($data[$transport])) { 64 | throw new \LogicException(sprintf('Unknown transport: "%s"', $transport)); 65 | } 66 | 67 | if (false == $this->isClassExists($data[$transport]['class'])) { 68 | Mage::throwException(sprintf('%s transport requires package "%s". Please install it via composer. #> php composer.php require %s', 69 | $data[$transport]['name'], $data[$transport]['package'], $data[$transport]['package'] 70 | )); 71 | } 72 | 73 | return $return; 74 | } 75 | 76 | /** 77 | * @param string $class 78 | * 79 | * @return bool 80 | */ 81 | private function isClassExists($class) 82 | { 83 | try { 84 | return class_exists($class); 85 | } catch (\Exception $e) { // in dev mode error handler throws exception 86 | return false; 87 | } 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /src/Enqueue/Enqueue/Model/Config/Source/Redis/Vendor.php: -------------------------------------------------------------------------------- 1 | 'phpredis', 'label' => Mage::helper('enqueue')->__('phpredis')], 14 | ['value' => 'predis', 'label' => Mage::helper('enqueue')->__('predis')], 15 | ]; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/Enqueue/Enqueue/Model/Config/Source/Transport.php: -------------------------------------------------------------------------------- 1 | 'rabbitmq_amqp', 'label' => Mage::helper('enqueue')->__('RabbitMQ AMQP')], 14 | ['value' => 'amqp', 'label' => Mage::helper('enqueue')->__('AMQP')], 15 | ['value' => 'rabbitmq_stomp', 'label' => Mage::helper('enqueue')->__('RabbitMQ STOMP')], 16 | ['value' => 'stomp', 'label' => Mage::helper('enqueue')->__('STOMP')], 17 | ['value' => 'fs', 'label' => Mage::helper('enqueue')->__('Filesystem')], 18 | ['value' => 'sqs', 'label' => Mage::helper('enqueue')->__('Amazon AWS SQS')], 19 | ['value' => 'redis', 'label' => Mage::helper('enqueue')->__('Redis')], 20 | ['value' => 'dbal', 'label' => Mage::helper('enqueue')->__('Doctrine DBAL')], 21 | ]; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/Enqueue/Enqueue/etc/adminhtml.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | Enqueue Message Queue 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /src/Enqueue/Enqueue/etc/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 0.1 6 | 7 | 8 | 9 | 10 | 11 | Enqueue_Enqueue_Model 12 | 13 | 14 | 15 | 16 | Enqueue_Enqueue_Helper 17 | 18 | 19 | 20 | 21 | 22 | 23 | rabbitmq-amqp 24 | 25 | 26 | enqueue 27 | app 28 | router 29 | default 30 | default 31 | 0 32 | 33 | 34 | localhost 35 | 5672 36 | guest 37 | guest 38 | / 39 | 1 40 | 41 | 42 | 5672 43 | 1 44 | 45 | 46 | 15672 47 | 61613 48 | 1 49 | 50 | 51 | 61613 52 | 1 53 | 54 | 55 | 1 56 | 0600 57 | 58 | 59 | 3 60 | 1 61 | 62 | 63 | 6379 64 | 1 65 | 66 | 67 | enqueue 68 | 1000 69 | 1 70 | 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /src/Enqueue/Enqueue/etc/system.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 1000 7 | 8 | 9 | 10 | 11 |     12 |             general 13 |             text 14 |             10000 15 |             1 16 |             0 17 |             0 18 | 19 | 20 | 21 | 1 22 | text 23 | 1 24 | 1 25 | 0 26 | 0 27 | 28 | 29 | 30 | select 31 | enqueue/config_field_transportdefault 32 | enqueue/config_source_transport 33 | 1 34 | 1 35 | 0 36 | - 37 | 38 | 39 | 40 | 41 | 42 | 1 43 | text 44 | 1 45 | 1 46 | 0 47 | 0 48 | 49 | 50 | 51 | text 52 | 2 53 | 1 54 | 0 55 | - 56 | 57 | 58 | 59 | text 60 | 3 61 | 1 62 | 0 63 | - 64 | 65 | 66 | 67 | text 68 | 4 69 | 1 70 | 0 71 | - 72 | 73 | 74 | 75 | text 76 | 5 77 | 1 78 | 0 79 | - 80 | 81 | 82 | 83 | text 84 | 6 85 | 1 86 | 0 87 | - 88 | 89 | 90 | 91 | text 92 | 7 93 | 1 94 | 0 95 | - 96 | validate-number 97 | 98 | 99 | 100 | 101 | 102 | 1 103 | text 104 | 1 105 | 1 106 | 0 107 | 0 108 | 109 | 110 | 111 | text 112 | 1 113 | 1 114 | 0 115 | - 116 | 117 | 118 | 119 | text 120 | 2 121 | 1 122 | 0 123 | - 124 | validate-number 125 | 126 | 127 | 128 | text 129 | 3 130 | 1 131 | 0 132 | - 133 | 134 | 135 | 136 | text 137 | 4 138 | 1 139 | 0 140 | - 141 | 142 | 143 | 144 | text 145 | 5 146 | 1 147 | 0 148 | - 149 | 150 | 151 | 152 | select 153 | adminhtml/system_config_source_yesno 154 | 6 155 | 1 156 | 0 157 | - 158 | Connection will be performed as later as possible. 159 | 160 | 161 | 162 | 163 | 164 | 0 165 | text 166 | 1 167 | 1 168 | 0 169 | 0 170 | 171 | 172 | 173 | text 174 | 1 175 | 1 176 | 0 177 | - 178 | 179 | 180 | 181 | text 182 | 2 183 | 1 184 | 0 185 | - 186 | validate-number 187 | 188 | 189 | 190 | text 191 | 3 192 | 1 193 | 0 194 | - 195 | 196 | 197 | 198 | text 199 | 4 200 | 1 201 | 0 202 | - 203 | 204 | 205 | 206 | text 207 | 5 208 | 1 209 | 0 210 | - 211 | 212 | 213 | 214 | select 215 | adminhtml/system_config_source_yesno 216 | 6 217 | 1 218 | 0 219 | - 220 | Connection will be performed as later as possible. 221 | 222 | 223 | 224 | 225 | 226 | 0 227 | text 228 | 1 229 | 1 230 | 0 231 | 0 232 | 233 | 234 | 235 | text 236 | 1 237 | 1 238 | 0 239 | - 240 | 241 | 242 | 243 | text 244 | 2 245 | 1 246 | 0 247 | - 248 | validate-number 249 | 250 | 251 | 252 | text 253 | 3 254 | 1 255 | 0 256 | - 257 | 258 | 259 | 260 | text 261 | 4 262 | 1 263 | 0 264 | - 265 | 266 | 267 | 268 | text 269 | 5 270 | 1 271 | 0 272 | - 273 | 274 | 275 | 276 | select 277 | adminhtml/system_config_source_yesno 278 | 6 279 | 1 280 | 0 281 | - 282 | Connection will be performed as later as possible. 283 | 284 | 285 | 286 | 287 | 288 | 0 289 | text 290 | 1 291 | 1 292 | 0 293 | 0 294 | 295 | 296 | 297 | text 298 | 1 299 | 1 300 | 0 301 | - 302 | 303 | 304 | 305 | text 306 | 2 307 | 1 308 | 0 309 | - 310 | validate-number 311 | 312 | 313 | 314 | text 315 | 3 316 | 1 317 | 0 318 | - 319 | 320 | 321 | 322 | text 323 | 4 324 | 1 325 | 0 326 | - 327 | 328 | 329 | 330 | text 331 | 5 332 | 1 333 | 0 334 | - 335 | 336 | 337 | 338 | select 339 | adminhtml/system_config_source_yesno 340 | 6 341 | 1 342 | 0 343 | - 344 | Connection will be performed as later as possible. 345 | 346 | 347 | 348 | select 349 | adminhtml/system_config_source_yesno 350 | 7 351 | 1 352 | 0 353 | - 354 | 355 | 356 | 357 | select 358 | adminhtml/system_config_source_yesno 359 | 8 360 | 1 361 | 0 362 | - 363 | 364 | 365 | 366 | text 367 | 9 368 | 1 369 | 0 370 | - 371 | validate-number 372 | 373 | 374 | 375 | 376 | 377 | 0 378 | text 379 | 1 380 | 1 381 | 0 382 | 0 383 | Note! Client:Router Topic and Client:Router Queue must be equal for this transport.]]> 384 | 385 | 386 | 387 | text 388 | 1 389 | 1 390 | 0 391 | - 392 | The store directory where all queue\topics files will be created and messages are stored 393 | 394 | 395 | 396 | text 397 | 2 398 | 1 399 | 0 400 | - 401 | The option tells how many messages should be read from file at once. The feature saves resources but could lead to bigger messages lose. 402 | validate-number 403 | 404 | 405 | 406 | text 407 | 3 408 | 1 409 | 0 410 | - 411 | The queue files are created with this given permissions if not exist. 412 | validate-number 413 | 414 | 415 | 416 | 417 | 418 | 0 419 | text 420 | 1 421 | 1 422 | 0 423 | 0 424 | 425 | 426 | 427 | text 428 | 1 429 | 1 430 | 0 431 | - 432 | 433 | 434 | 435 | text 436 | 2 437 | 1 438 | 0 439 | - 440 | 441 | 442 | 443 | text 444 | 3 445 | 1 446 | 0 447 | - 448 | 449 | 450 | 451 | text 452 | 4 453 | 1 454 | 0 455 | - 456 | 457 | 458 | 459 | text 460 | 5 461 | 1 462 | 0 463 | - 464 | Configures the maximum number of allowed retries for a client (pass 0 to disable retries) 465 | validate-number 466 | 467 | 468 | 469 | select 470 | adminhtml/system_config_source_yesno 471 | 6 472 | 1 473 | 0 474 | - 475 | Connection will be performed as later as possible. 476 | 477 | 478 | 479 | 480 | 481 | 0 482 | text 483 | 1 484 | 1 485 | 0 486 | 0 487 | 488 | 489 | 490 | text 491 | 1 492 | 1 493 | 0 494 | - 495 | 496 | 497 | 498 | text 499 | 2 500 | 1 501 | 0 502 | - 503 | validate-number 504 | 505 | 506 | 507 | select 508 | enqueue/config_source_redis_vendor 509 | 3 510 | 1 511 | 0 512 | - 513 | 514 | 515 | 516 | select 517 | adminhtml/system_config_source_yesno 518 | 4 519 | 1 520 | 0 521 | - 522 | Connection will be performed as later as possible. 523 | 524 | 525 | 526 | 527 | 528 | 0 529 | text 530 | 1 531 | 1 532 | 0 533 | 0 534 | 535 | 536 | 537 | text 538 | 1 539 | 1 540 | 0 541 | - 542 | Connecting using a URL Example: mysql://user:password@host:port/dbname?charset=UTF8]]> 543 | 544 | 545 | 546 | text 547 | 1 548 | 1 549 | 0 550 | - 551 | 552 | 553 | 554 | text 555 | 2 556 | 1 557 | 0 558 | - 559 | validate-number 560 | 561 | 562 | 563 | select 564 | adminhtml/system_config_source_yesno 565 | 4 566 | 1 567 | 0 568 | - 569 | Connection will be performed as later as possible. 570 | 571 | 572 | 573 | 574 |    575 | 576 | 577 | --------------------------------------------------------------------------------