Skip to content

Commit

Permalink
dispatch a message when uploading
Browse files Browse the repository at this point in the history
  • Loading branch information
makomweb committed Jun 17, 2021
1 parent cb1c917 commit 4f9def8
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 5 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,11 @@ php bin/console doctrine:schema:update --force

### 7. Access the app

Your app is runnint locally under [https://127.0.0.1:8000](https://127.0.0.1:8000)
Your app is running locally under [https://127.0.0.1:8000](https://127.0.0.1:8000)

### 8. Access the RabbitMQ admin console

Your app is runnint locally under [http://guest:[email protected]:15672](http://guest:[email protected]:15672)
Your app is running locally under [http://guest:[email protected]:15672](http://guest:[email protected]:15672)

# Learnings

Expand Down
3 changes: 2 additions & 1 deletion config/packages/messenger.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@ framework:
# https://symfony.com/doc/current/messenger.html#transport-configuration
async: '%env(MESSENGER_TRANSPORT_DSN)%'
# failed: 'doctrine://default?queue_name=failed'
# sync: 'sync://'
sync: 'sync://'

routing:
# Route your messages to the transports
'App\Message\OrderPlacedMessage': async
'App\Message\FileUploadMessage': async
10 changes: 8 additions & 2 deletions src/Controller/FileUploadController.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@
namespace App\Controller;

use App\Entity\FileUpload;
use App\Message\FileUploadMessage;
use App\Repository\FileUploadRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Messenger\MessageBusInterface;
use App\Service\FileUploader;
use Psr\Log\LoggerInterface;
use Symfony\Component\Uid\Uuid;
Expand All @@ -18,14 +20,17 @@ class FileUploadController extends AbstractController
* @param FileUploader $uploader
* @param LoggerInterface $logger
* @param FileUploadRepository $repository
* @param MessageBusInterface $bus
*/
public function __construct(FileUploader $uploader,
LoggerInterface $logger,
FileUploadRepository $repository)
FileUploadRepository $repository,
MessageBusInterface $bus)
{
$this->uploader = $uploader;
$this->logger = $logger;
$this->repository = $repository;
$this->bus = $bus;
}

/**
Expand Down Expand Up @@ -76,7 +81,8 @@ public function doUpload(Request $request, string $uploadDir): Response
$upload = new FileUpload();
$upload->setName($filename);
$upload->setStatus("initial");
$this->repository->save($upload);
$id = $this->repository->save($upload);
$this->bus->dispatch(new FileUploadMessage($id));
}

return $this->redirectToRoute('upload');
Expand Down
41 changes: 41 additions & 0 deletions src/MessageHandler/FileUploadMessageHandler.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<?php

namespace App\MessageHandler;


use App\Message\FileUploadMessage;
use App\Repository\FileUploadRepository;
use Symfony\Component\Messenger\Handler\MessageHandlerInterface;

class FileUploadMessageHandler implements MessageHandlerInterface
{
/**
* @var FileUploadRepository
*/
private $repository;

public function __construct(FileUploadRepository $repository)
{
$this->repository = $repository;
}

public function __invoke(FileUploadMessage $message)
{
echo 'File upload received: ' . $message->getId();

// Fake being busy.
sleep(1);

// fetch entity
$entity = $this->repository->find($message->getId());

if ($entity)
{
// update status
$entity->setStatus("handled");
$this->repository->save($entity);
}

// TODO Handle errors which might occur during handling the message!
}
}

0 comments on commit 4f9def8

Please sign in to comment.