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

Appearance settings

Commit 1e35f24

Browse filesBrowse files
committed
feature #31288 [Messenger] RoutableMessageBus route to default bus (dirk39)
This PR was squashed before being merged into the 4.3-dev branch (closes #31288). Discussion ---------- [Messenger] RoutableMessageBus route to default bus | Q | A | ------------- | --- | Branch? | master | Bug fix? | yes | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | #31200 | License | MIT | Doc PR | Not needed Hi! I modified the behaviour of RoutableMessageBus to route message without BusNameStamp to default bus instead of raise an exception. Made with ❤️ by [![Open Source Saturday](https://img.shields.io/badge/%E2%9D%A4%EF%B8%8F-open%20source%20saturday-F64060.svg)](https://www.meetup.com/it-IT/Open-Source-Saturday-Milano/) Commits ------- c4e5e83 [Messenger] RoutableMessageBus route to default bus
2 parents 2b923a7 + c4e5e83 commit 1e35f24
Copy full SHA for 1e35f24

File tree

Expand file treeCollapse file tree

2 files changed

+28
-10
lines changed
Filter options
Expand file treeCollapse file tree

2 files changed

+28
-10
lines changed

‎src/Symfony/Component/Messenger/RoutableMessageBus.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Messenger/RoutableMessageBus.php
+4-6Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,12 @@ public function dispatch($envelope, array $stamps = []): Envelope
4545

4646
/** @var BusNameStamp $busNameStamp */
4747
$busNameStamp = $envelope->last(BusNameStamp::class);
48-
if (null === $busNameStamp) {
49-
throw new InvalidArgumentException('Envelope does not contain a BusNameStamp.');
50-
}
48+
$busName = null !== $busNameStamp ? $busNameStamp->getBusName() : MessageBusInterface::class;
5149

52-
if (!$this->busLocator->has($busNameStamp->getBusName())) {
53-
throw new InvalidArgumentException(sprintf('Invalid bus name "%s" on BusNameStamp.', $busNameStamp->getBusName()));
50+
if (!$this->busLocator->has($busName)) {
51+
throw new InvalidArgumentException(sprintf('Bus name "%s" does not exists.', $busName));
5452
}
5553

56-
return $this->busLocator->get($busNameStamp->getBusName())->dispatch($envelope, $stamps);
54+
return $this->busLocator->get($busName)->dispatch($envelope, $stamps);
5755
}
5856
}

‎src/Symfony/Component/Messenger/Tests/RoutableMessageBusTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Messenger/Tests/RoutableMessageBusTest.php
+24-4Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,35 @@ public function testItRoutesToTheCorrectBus()
4141
$this->assertSame($envelope, $routableBus->dispatch($envelope, [$stamp]));
4242
}
4343

44-
public function testItExceptionOnMissingStamp()
44+
public function testItRoutesToDefaultBus()
45+
{
46+
$envelope = new Envelope(new \stdClass());
47+
$stamp = new DelayStamp(5);
48+
$defaultBus = $this->createMock(MessageBusInterface::class);
49+
$defaultBus->expects($this->once())->method('dispatch')->with($envelope, [$stamp])
50+
->willReturn($envelope);
51+
52+
$container = $this->createMock(ContainerInterface::class);
53+
$container->expects($this->once())->method('has')->with(MessageBusInterface::class)
54+
->willReturn(true);
55+
$container->expects($this->once())->method('get')->with(MessageBusInterface::class)
56+
->willReturn($defaultBus);
57+
58+
$routableBus = new RoutableMessageBus($container);
59+
60+
$this->assertSame($envelope, $routableBus->dispatch($envelope, [$stamp]));
61+
}
62+
63+
public function testItExceptionOnDefaultBusNotFound()
4564
{
4665
$this->expectException(InvalidArgumentException::class);
47-
$this->expectExceptionMessage('does not contain a BusNameStamp');
66+
$this->expectExceptionMessage(sprintf('Bus name "%s" does not exists.', MessageBusInterface::class));
4867

4968
$envelope = new Envelope(new \stdClass());
5069

5170
$container = $this->createMock(ContainerInterface::class);
52-
$container->expects($this->never())->method('has');
71+
$container->expects($this->once())->method('has')->with(MessageBusInterface::class)
72+
->willReturn(false);
5373

5474
$routableBus = new RoutableMessageBus($container);
5575
$routableBus->dispatch($envelope);
@@ -58,7 +78,7 @@ public function testItExceptionOnMissingStamp()
5878
public function testItExceptionOnBusNotFound()
5979
{
6080
$this->expectException(InvalidArgumentException::class);
61-
$this->expectExceptionMessage('Invalid bus name');
81+
$this->expectExceptionMessage(sprintf('Bus name "%s" does not exists.', 'foo_bus'));
6282

6383
$envelope = new Envelope(new \stdClass(), [new BusNameStamp('foo_bus')]);
6484

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.