Skip to content

Commit

Permalink
event subsriberの導入
Browse files Browse the repository at this point in the history
  • Loading branch information
polidog committed Mar 13, 2016
1 parent 244d2b5 commit 2e3627f
Show file tree
Hide file tree
Showing 6 changed files with 123 additions and 2 deletions.
2 changes: 1 addition & 1 deletion ContainerAwareJob.php
Expand Up @@ -29,7 +29,7 @@ public function execute()
$this->getEventDispatcher()->dispatch(SQSJobQueueEvents::JOB_EXECUTE, $event);
$result = $this->run();
$event->setExecutedStatus($result);
$this->getEventDispatcher()->dispatch(SQSJobQueueEvents::JOB_RUN, $event);
$this->getEventDispatcher()->dispatch(SQSJobQueueEvents::JOB_RAN, $event);
return $result;
}

Expand Down
2 changes: 2 additions & 0 deletions DependencyInjection/TaviiSQSJobQueueExtension.php
Expand Up @@ -27,6 +27,8 @@ public function load(array $configs, ContainerBuilder $container)
$container->setParameter('sqs_job_queue.aws.region', $config['aws']['region']);
$container->setParameter('sqs_job_queue.prefix', $config['prefix']);

// $container->addCompilerPass();

$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.yml');
}
Expand Down
106 changes: 106 additions & 0 deletions EventListener/LoggingListener.php
@@ -0,0 +1,106 @@
<?php

/**
* Created by PhpStorm.
* User: polidog
* Date: 2016/03/13
*/

namespace Tavii\SQSJobQueueBundle\EventListener;
use Psr\Log\LoggerInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Tavii\SQSJobQueueBundle\Event\DeleteQueueEvent;
use Tavii\SQSJobQueueBundle\Event\JobEvent;
use Tavii\SQSJobQueueBundle\Event\ReceiveQueueEvent;
use Tavii\SQSJobQueueBundle\Event\SentQueueEvent;
use Tavii\SQSJobQueueBundle\SQSJobQueueEvents;

/**
* Class LoggingListener
*/
class LoggingListener implements EventSubscriberInterface
{
/**
* @var LoggerInterface
*/
private $logger;

/**
* LoggingListener constructor.
* @param LoggerInterface $logger
*/
public function __construct(LoggerInterface $logger)
{
$this->logger = $logger;
}


/**
* @param ReceiveQueueEvent $event
*/
public function onQueueReceived(ReceiveQueueEvent $event)
{
$this->logger->info("Queue Received: ",[
'queue_url' => $event->getMessage()->getQueueUrl(),
'job_name' => $event->getMessage()->getJob()->getName(),
]);
}

/**
* @param SentQueueEvent $event
*/
public function onQueueSent(SentQueueEvent $event)
{
$this->logger->info("Queue Send: ",[
'job_name' => $event->getJob()->getName(),
'sent' => $event->isSent()
]);
}

/**
* @param DeleteQueueEvent $event
*/
public function onQueueDeleted(DeleteQueueEvent $event)
{
$this->logger->info("Queue Delete: ",[
'queue_url' => $event->getMessage()->getQueueUrl(),
'job_name' => $event->getMessage()->getJob()->getName(),
'deleted' => $event->isDeleted()
]);

}

/**
* @param JobEvent $event
*/
public function onJobExecute(JobEvent $event)
{
$this->logger->info("Job Execute: ",[
'job_name' => $event->getJob()->getName(),
]);
}

/**
* @param JobEvent $event
*/
public function onJobRan(JobEvent $event)
{
$this->logger->info("Job Ran: ",[
'job_name' => $event->getJob()->getName(),
'execute_status' => $event->isExecutedStatus()
]);

}

public static function getSubscribedEvents()
{
return [
SQSJobQueueEvents::QUEUE_RECEIVED => 'onQueueReceived',
SQSJobQueueEvents::QUEUE_SENT => 'onQueueSent',
SQSJobQueueEvents::QUEUE_DELETED => 'onQueueDeleted',
SQSJobQueueEvents::JOB_EXECUTE => 'onJobExecute',
SQSJobQueueEvents::JOB_RAN => 'onJobRan',
];
}

}
7 changes: 7 additions & 0 deletions Resources/config/services.yml
Expand Up @@ -33,6 +33,13 @@ services:
- @sqs_job_queue.storage.doctrine
lazy: true

sqs_job_queue.event_listenr.logging_listener:
class: Tavii\SQSJobQueueBundle\EventListener\LoggingListener
arguments:
- "@logger"
tags:
- { name: "sqs_job_queue.event_subscriber" }

###
# storage
###
Expand Down
2 changes: 1 addition & 1 deletion SQSJobQueueEvents.php
Expand Up @@ -19,5 +19,5 @@ final class SQSJobQueueEvents

const JOB_EXECUTE = "sqs_job_queue.job_execute";

const JOB_RUN = "sqs_job_queue.job_run";
const JOB_RAN = "sqs_job_queue.job_run";
}
6 changes: 6 additions & 0 deletions TaviiSQSJobQueueBundle.php
Expand Up @@ -2,8 +2,14 @@

namespace Tavii\SQSJobQueueBundle;

use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\EventDispatcher\DependencyInjection\RegisterListenersPass;
use Symfony\Component\HttpKernel\Bundle\Bundle;

class TaviiSQSJobQueueBundle extends Bundle
{
public function build(ContainerBuilder $container)
{
$container->addCompilerPass(new RegisterListenersPass("event_dispatcher", "sqs_job_queue.event_listener", "sqs_job_queue.event_subscriber"));
}
}

0 comments on commit 2e3627f

Please sign in to comment.