Skip to content

Commit

Permalink
available change queue service from config
Browse files Browse the repository at this point in the history
  • Loading branch information
peter-gribanov committed Apr 21, 2017
1 parent af090e7 commit d884324
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 10 deletions.
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,11 @@ gpslab_domain_event:
# As a default used 'listener_locator'
bus: 'listener_locator'

# Event queue service
# Support 'memory', 'memory_unique' or a custom service
# As a default used 'memory_unique'
queue: 'memory_unique'

# Event listener locator
# Support 'voter', 'named_event' or custom service
# As a default used 'named_event'
Expand Down
5 changes: 5 additions & 0 deletions src/DependencyInjection/Configuration.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ class Configuration implements ConfigurationInterface
*
* gpslab_domain_event:
* bus: 'listener_locator'
* queue: 'memory_unique'
* locator: 'named_event'
* name_resolver: 'event_class'
*
Expand All @@ -35,6 +36,10 @@ public function getConfigTreeBuilder()
->cannotBeEmpty()
->defaultValue('listener_locator')
->end()
->scalarNode('queue')
->cannotBeEmpty()
->defaultValue('memory_unique')
->end()
->scalarNode('locator')
->cannotBeEmpty()
->defaultValue('named_event')
Expand Down
33 changes: 24 additions & 9 deletions src/DependencyInjection/GpsLabDomainEventExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ public function load(array $configs, ContainerBuilder $container)
$config = $this->processConfiguration(new Configuration(), $configs);

$container->setAlias('domain_event.bus', $this->getBusRealName($config['bus']));
$container->setAlias('domain_event.queue', $this->getQueueRealName($config['queue']));
$container->setAlias('domain_event.locator', $this->getLocatorRealName($config['locator']));
$container->setAlias('domain_event.name_resolver', $this->getNameResolverRealName($config['name_resolver']));
}
Expand All @@ -40,10 +41,10 @@ public function load(array $configs, ContainerBuilder $container)
*
* @return string
*/
protected function getLocatorRealName($name)
protected function getBusRealName($name)
{
if (in_array($name, ['voter', 'named_event'])) {
return 'domain_event.locator.'.$name;
if (in_array($name, ['listener_locator', 'queue'])) {
return 'domain_event.bus.'.$name;
}

return $name;
Expand All @@ -54,10 +55,10 @@ protected function getLocatorRealName($name)
*
* @return string
*/
protected function getNameResolverRealName($name)
protected function getQueueRealName($name)
{
if (in_array($name, ['event_class', 'event_class_last_part', 'named_event'])) {
return 'domain_event.name_resolver.'.$name;
if (in_array($name, ['memory', 'memory_unique'])) {
return 'domain_event.queue.'.$name;
}

return $name;
Expand All @@ -68,10 +69,24 @@ protected function getNameResolverRealName($name)
*
* @return string
*/
protected function getBusRealName($name)
protected function getLocatorRealName($name)
{
if (in_array($name, ['listener_locator', 'queue'])) {
return 'domain_event.bus.'.$name;
if (in_array($name, ['voter', 'named_event'])) {
return 'domain_event.locator.'.$name;
}

return $name;
}

/**
* @param string $name
*
* @return string
*/
protected function getNameResolverRealName($name)
{
if (in_array($name, ['event_class', 'event_class_last_part', 'named_event'])) {
return 'domain_event.name_resolver.'.$name;
}

return $name;
Expand Down
2 changes: 1 addition & 1 deletion src/Resources/config/bus.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ services:

domain_event.bus.queue:
class: GpsLab\Domain\Event\Bus\QueueEventBus
arguments: [ '@domain_event.queue.memory_unique', '@domain_event.bus.listener_locator' ]
arguments: [ '@domain_event.queue', '@domain_event.bus.listener_locator' ]
public: false
2 changes: 2 additions & 0 deletions src/Resources/config/queue.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
services:
domain_event.queue.memory:
class: GpsLab\Domain\Event\Queue\MemoryEventQueue
public: false

domain_event.queue.memory_unique:
class: GpsLab\Domain\Event\Queue\MemoryUniqueEventQueue
public: false

0 comments on commit d884324

Please sign in to comment.