Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit df156ae

Browse files
magento enqueue
0 parents commit df156ae

File tree

9 files changed

+363
-0
lines changed

9 files changed

+363
-0
lines changed

‎.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
*~
2+
/composer.lock
3+
/composer.phar
4+
/phpunit.xml
5+
/vendor/
6+
/.idea/

‎composer.json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"name": "enqueue/magento-enqueue",
3+
"type": "magento-module",
4+
"description": "Enqueue Message Queue for Magento",
5+
"require": {
6+
"enqueue/amqp-ext": "^0.3",
7+
"enqueue/enqueue": "^0.3"
8+
},
9+
"extra":{
10+
"map": [
11+
["src/Enqueue", "app/code/local/Enqueue"],
12+
["etc/modules/Enqueue_Enqueue.xml", "app/etc/modules/Enqueue_Enqueue.xml"],
13+
["shell/enqueue.php", "shell/enqueue.php"]
14+
]
15+
}
16+
}

‎etc/modules/Enqueue_Enqueue.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<config>
3+
<modules>
4+
<Enqueue_Enqueue>
5+
<active>true</active>
6+
<codePool>local</codePool>
7+
</Enqueue_Enqueue>
8+
</modules>
9+
</config>

‎shell/enqueue.php

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#!/usr/bin/env php
2+
<?php
3+
4+
use Enqueue\Symfony\Client\ConsumeMessagesCommand;
5+
use Enqueue\Symfony\Client\Meta\QueuesCommand;
6+
use Enqueue\Symfony\Client\Meta\TopicsCommand;
7+
use Enqueue\Symfony\Client\ProduceMessageCommand;
8+
use Enqueue\Symfony\Client\SetupBrokerCommand;
9+
use Symfony\Component\Console\Application;
10+
11+
// if you don't want to setup permissions the proper way, just uncomment the following PHP line
12+
// read http://symfony.com/doc/current/book/installation.html#configuration-and-setup for more information
13+
//umask(0000);
14+
15+
set_time_limit(0);
16+
17+
$dir = realpath(dirname($_SERVER['PHP_SELF']));
18+
$loader = require $dir.'/../app/Mage.php';
19+
20+
// init
21+
Mage::app('admin', 'store');
22+
23+
/** @var \Enqueue\Client\SimpleClient $client */
24+
$client = Mage::helper('enqueue')->getClient();
25+
26+
//bind message processor
27+
//$helper = Mage::helper('helper-name');
28+
//$client->bind('topic', 'consumer-name', [$helper, 'method-name']);
29+
30+
$application = new Application();
31+
32+
$application->add(new SetupBrokerCommand($client->getDriver()));
33+
$application->add(new ProduceMessageCommand($client->getProducer()));
34+
$application->add(new QueuesCommand($client->getQueueMetaRegistry()));
35+
$application->add(new TopicsCommand($client->getTopicMetaRegistry()));
36+
$application->add(new ConsumeMessagesCommand(
37+
$client->getQueueConsumer(),
38+
$client->getProcessor(),
39+
$client->getQueueMetaRegistry(),
40+
$client->getDriver()
41+
));
42+
43+
$application->run();

‎src/Enqueue/Enqueue/Helper/Data.php

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
<?php
2+
3+
class Enqueue_Enqueue_Helper_Data extends Mage_Core_Helper_Data
4+
{
5+
/**
6+
* @var \Enqueue\Client\SimpleClient
7+
*/
8+
private $client;
9+
10+
public function getClient()
11+
{
12+
if (null === $this->client) {
13+
$name = Mage::getStoreConfig('enqueue/transport/default');
14+
15+
switch ($name) {
16+
case 'rabbitmq-amqp':
17+
$this->client = $this->buildRabbitMqAmqp();
18+
break;
19+
default:
20+
throw new \LogicException(sprintf('Unknown transport: "%s"', $name));
21+
}
22+
}
23+
24+
return $this->client;
25+
}
26+
27+
public function buildRabbitMqAmqp()
28+
{
29+
$config = [
30+
'host' => Mage::getStoreConfig('enqueue/rabbitmq/host'),
31+
'port' => Mage::getStoreConfig('enqueue/rabbitmq/port'),
32+
'login' => Mage::getStoreConfig('enqueue/rabbitmq/login'),
33+
'password' => Mage::getStoreConfig('enqueue/rabbitmq/password'),
34+
'vhost' => Mage::getStoreConfig('enqueue/rabbitmq/vhost'),
35+
];
36+
37+
$connectionFactory = new \Enqueue\AmqpExt\AmqpConnectionFactory($config);
38+
39+
return new \Enqueue\Client\SimpleClient(
40+
$connectionFactory->createContext(),
41+
$this->buildConfig()
42+
);
43+
}
44+
45+
public function buildConfig()
46+
{
47+
return new \Enqueue\Client\Config(
48+
Mage::getStoreConfig('enqueue/client/prefix'),
49+
Mage::getStoreConfig('enqueue/client/app_name'),
50+
Mage::getStoreConfig('enqueue/client/router_topic'),
51+
Mage::getStoreConfig('enqueue/client/router_queue'),
52+
Mage::getStoreConfig('enqueue/client/default_processor_queue'),
53+
'enqueue-router-processor'
54+
);
55+
}
56+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
3+
class Enqueue_Enqueue_Model_Config_Source_Transport
4+
{
5+
/**
6+
* Options getter
7+
*
8+
* @return array
9+
*/
10+
public function toOptionArray()
11+
{
12+
return [
13+
['value' => 'rabbitmq-amqp', 'label' => Mage::helper('enqueue')->__('RabbitMQ AMQP')],
14+
];
15+
}
16+
}

‎src/Enqueue/Enqueue/etc/adminhtml.xml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<config>
3+
<acl>
4+
<resources>
5+
<admin>
6+
<children>
7+
<system>
8+
<children>
9+
<config>
10+
<children>
11+
<enqueue translate="title" module="enqueue">
12+
<title>Enqueue Message Queue</title>
13+
</enqueue>
14+
</children>
15+
</config>
16+
</children>
17+
</system>
18+
</children>
19+
</admin>
20+
</resources>
21+
</acl>
22+
</config>

‎src/Enqueue/Enqueue/etc/config.xml

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<config>
3+
<modules>
4+
<Enqueue_Enqueue>
5+
<version>0.1</version>
6+
</Enqueue_Enqueue>
7+
</modules>
8+
<global>
9+
<models>
10+
<enqueue>
11+
<class>Enqueue_Enqueue_Model</class>
12+
</enqueue>
13+
</models>
14+
<helpers>
15+
<enqueue>
16+
<class>Enqueue_Enqueue_Helper</class>
17+
</enqueue>
18+
</helpers>
19+
</global>
20+
<default>
21+
<enqueue>
22+
<transport>
23+
<default>rabbitmq-amqp</default>
24+
</transport>
25+
<rabbitmq>
26+
<host>localhost</host>
27+
<port>5672</port>
28+
<login>guest</login>
29+
<password>guest</password>
30+
<vhost>/</vhost>
31+
</rabbitmq>
32+
<client>
33+
<prefix>enqueue</prefix>
34+
<app_name>app</app_name>
35+
<router_topic>router</router_topic>
36+
<router_queue>default</router_queue>
37+
<default_processor_queue>default</default_processor_queue>
38+
<redelivered_delay_time>0</redelivered_delay_time>
39+
</client>
40+
</enqueue>
41+
</default>
42+
</config>

‎src/Enqueue/Enqueue/etc/system.xml

Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<config>
3+
<tabs>
4+
<enqueue translate="label" module="enqueue">
5+
<label>Enqueue Message Queue</label>
6+
<sort_order>1000</sort_order>
7+
</enqueue>
8+
</tabs>
9+
<sections>
10+
<enqueue translate="label" module="enqueue">
11+
<label>Enqueue Message Queue</label>
12+
<tab>general</tab>
13+
<frontend_type>text</frontend_type>
14+
<sort_order>10000</sort_order>
15+
<show_in_default>1</show_in_default>
16+
<show_in_website>0</show_in_website>
17+
<show_in_store>0</show_in_store>
18+
<groups>
19+
<transport translate="label">
20+
<label>Transport</label>
21+
<expanded>1</expanded>
22+
<frontend_type>text</frontend_type>
23+
<sort_order>1</sort_order>
24+
<show_in_default>1</show_in_default>
25+
<show_in_website>0</show_in_website>
26+
<show_in_store>0</show_in_store>
27+
<fields>
28+
<default translate="label">
29+
<label>Default</label>
30+
<frontend_type>select</frontend_type>
31+
<source_model>enqueue/config_source_transport</source_model>
32+
<sort_order>1</sort_order>
33+
<show_in_default>1</show_in_default>
34+
<show_in_website>0</show_in_website>
35+
<show_in_store>-</show_in_store>
36+
</default>
37+
</fields>
38+
</transport>
39+
<rabbitmq translate="label">
40+
<label>Rabbit MQ</label>
41+
<expanded>1</expanded>
42+
<frontend_type>text</frontend_type>
43+
<sort_order>1</sort_order>
44+
<show_in_default>1</show_in_default>
45+
<show_in_website>0</show_in_website>
46+
<show_in_store>0</show_in_store>
47+
<fields>
48+
<host translate="label">
49+
<label>Host</label>
50+
<frontend_type>text</frontend_type>
51+
<sort_order>1</sort_order>
52+
<show_in_default>1</show_in_default>
53+
<show_in_website>0</show_in_website>
54+
<show_in_store>-</show_in_store>
55+
</host>
56+
<port translate="label">
57+
<label>Port</label>
58+
<frontend_type>text</frontend_type>
59+
<sort_order>2</sort_order>
60+
<show_in_default>1</show_in_default>
61+
<show_in_website>0</show_in_website>
62+
<show_in_store>-</show_in_store>
63+
</port>
64+
<login translate="label">
65+
<label>Login</label>
66+
<frontend_type>text</frontend_type>
67+
<sort_order>3</sort_order>
68+
<show_in_default>1</show_in_default>
69+
<show_in_website>0</show_in_website>
70+
<show_in_store>-</show_in_store>
71+
</login>
72+
<password translate="label">
73+
<label>Password</label>
74+
<frontend_type>text</frontend_type>
75+
<sort_order>4</sort_order>
76+
<show_in_default>1</show_in_default>
77+
<show_in_website>0</show_in_website>
78+
<show_in_store>-</show_in_store>
79+
</password>
80+
<vhost translate="label">
81+
<label>Virtual Host</label>
82+
<frontend_type>text</frontend_type>
83+
<sort_order>5</sort_order>
84+
<show_in_default>1</show_in_default>
85+
<show_in_website>0</show_in_website>
86+
<show_in_store>-</show_in_store>
87+
</vhost>
88+
</fields>
89+
</rabbitmq>
90+
<client translate="label">
91+
<label>Client</label>
92+
<expanded>1</expanded>
93+
<frontend_type>text</frontend_type>
94+
<sort_order>1</sort_order>
95+
<show_in_default>1</show_in_default>
96+
<show_in_website>0</show_in_website>
97+
<show_in_store>0</show_in_store>
98+
<fields>
99+
<prefix translate="label">
100+
<label>Prefix</label>
101+
<frontend_type>text</frontend_type>
102+
<default_value>qqqqqq</default_value>
103+
<sort_order>2</sort_order>
104+
<show_in_default>1</show_in_default>
105+
<show_in_website>0</show_in_website>
106+
<show_in_store>-</show_in_store>
107+
</prefix>
108+
<app_name translate="label">
109+
<label>App Name</label>
110+
<frontend_type>text</frontend_type>
111+
<sort_order>3</sort_order>
112+
<show_in_default>1</show_in_default>
113+
<show_in_website>0</show_in_website>
114+
<show_in_store>-</show_in_store>
115+
</app_name>
116+
<router_topic translate="label">
117+
<label>Router Topic</label>
118+
<frontend_type>text</frontend_type>
119+
<sort_order>4</sort_order>
120+
<show_in_default>1</show_in_default>
121+
<show_in_website>0</show_in_website>
122+
<show_in_store>-</show_in_store>
123+
</router_topic>
124+
<router_queue translate="label">
125+
<label>Router Queue</label>
126+
<frontend_type>text</frontend_type>
127+
<sort_order>5</sort_order>
128+
<show_in_default>1</show_in_default>
129+
<show_in_website>0</show_in_website>
130+
<show_in_store>-</show_in_store>
131+
</router_queue>
132+
<default_processor_queue translate="label">
133+
<label>Default Processor Queue</label>
134+
<frontend_type>text</frontend_type>
135+
<sort_order>6</sort_order>
136+
<show_in_default>1</show_in_default>
137+
<show_in_website>0</show_in_website>
138+
<show_in_store>-</show_in_store>
139+
</default_processor_queue>
140+
<redelivered_delay_time translate="label">
141+
<label>Redelivered Delay Time</label>
142+
<frontend_type>text</frontend_type>
143+
<sort_order>7</sort_order>
144+
<show_in_default>1</show_in_default>
145+
<show_in_website>0</show_in_website>
146+
<show_in_store>-</show_in_store>
147+
</redelivered_delay_time>
148+
</fields>
149+
</client>
150+
</groups>
151+
</enqueue>
152+
</sections>
153+
</config>

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /