Skip to content

Commit e13bd25

Browse files
committed
Added exchange declare helper
1 parent d32b53d commit e13bd25

File tree

9 files changed

+32
-13
lines changed

9 files changed

+32
-13
lines changed

examples/multi/consumer_bar.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
declare(strict_types=1);
44

55
use Onliner\CommandBus\Builder;
6+
use Onliner\CommandBus\Remote\AMQP\Exchange;
67
use Onliner\CommandBus\Remote\AMQP\Transport;
78
use Onliner\CommandBus\Remote\AMQP\Consumer;
89

@@ -13,6 +14,8 @@
1314
});
1415

1516
$transport = Transport::create('amqp://guest:guest@localhost:5673');
17+
$transport->declare(Exchange::create(['name' => 'bar']));
18+
1619
$consumer = $transport->consume();
1720
$consumer->listen('#', 'bar');
1821
$consumer->run($builder->build());

examples/multi/consumer_foo.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
declare(strict_types=1);
44

55
use Onliner\CommandBus\Builder;
6+
use Onliner\CommandBus\Remote\AMQP\Exchange;
67
use Onliner\CommandBus\Remote\AMQP\Transport;
78
use Onliner\CommandBus\Remote\AMQP\Consumer;
89

@@ -13,6 +14,8 @@
1314
});
1415

1516
$transport = Transport::create('amqp://guest:guest@localhost:5672');
17+
$transport->declare(Exchange::create(['name' => 'foo']));
18+
1619
$consumer = $transport->consume();
1720
$consumer->listen('#', 'foo');
1821
$consumer->run($builder->build());

examples/remote/consumer.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
declare(strict_types=1);
44

55
use Onliner\CommandBus\Builder;
6+
use Onliner\CommandBus\Remote\AMQP\Exchange;
67
use Onliner\CommandBus\Remote\AMQP\Transport;
78
use Onliner\CommandBus\Remote\AMQP\Consumer;
89
use Onliner\CommandBus\Remote\AMQP\Queue;
@@ -16,6 +17,8 @@
1617
});
1718

1819
$transport = Transport::create('amqp://guest:guest@localhost:5672');
20+
$transport->declare(Exchange::create(['name' => 'foo']));
21+
1922
$consumer = $transport->consume();
2023

2124
$pattern = $argv[1] ?? '#';

examples/router/consumer_bar.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
declare(strict_types=1);
44

55
use Onliner\CommandBus\Builder;
6+
use Onliner\CommandBus\Remote\AMQP\Exchange;
67
use Onliner\CommandBus\Remote\AMQP\Transport;
78
use Onliner\CommandBus\Remote\AMQP\Consumer;
89

@@ -14,6 +15,7 @@
1415

1516
$dispatcher = $builder->build();
1617
$transport = Transport::create('amqp://guest:guest@localhost:5672');
18+
$transport->declare(Exchange::create(['name' => 'bar']));
1719

1820
/** @var Consumer $consumer */
1921
$consumer = $transport->consume();

examples/router/consumer_foo.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
declare(strict_types=1);
44

55
use Onliner\CommandBus\Builder;
6+
use Onliner\CommandBus\Remote\AMQP\Exchange;
67
use Onliner\CommandBus\Remote\AMQP\Transport;
78
use Onliner\CommandBus\Remote\AMQP\Consumer;
89

@@ -15,6 +16,7 @@
1516
$dispatcher = $builder->build();
1617

1718
$transport = Transport::create('amqp://guest:guest@localhost:5672');
19+
$transport->declare(Exchange::create(['name' => 'foo']));
1820

1921
/** @var Consumer $consumer */
2022
$consumer = $transport->consume();

src/Remote/AMQP/Exchange.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public static function create(array $options): self
3939
throw new InvalidArgumentException('Exchange type must be a string');
4040
}
4141

42-
$name = $options['exchange'] ?? sprintf('amqp.%s', $type);
42+
$name = $options['name'] ?? sprintf('amqp.%s', $type);
4343
$args = $options['args'] ?? [];
4444

4545
if (!is_string($name)) {

src/Remote/AMQP/Packager.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,12 @@ public function __construct(
3030

3131
public function pack(Envelope $envelope): AMQPMessage
3232
{
33-
$headers = array_replace($envelope->headers, [
34-
Headers::MESSAGE_TYPE => $envelope->class,
35-
]);
33+
$headers = new AMQPTable($envelope->headers);
34+
$headers->set(Headers::MESSAGE_TYPE, $envelope->class);
3635

3736
return new AMQPMessage($envelope->payload, [
3837
'delivery_mode' => $this->deliveryMode,
39-
'application_headers' => new AMQPTable($headers),
38+
'application_headers' => $headers,
4039
]);
4140
}
4241

src/Remote/AMQP/Transport.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,13 @@ public function consume(): Consumer
4545
{
4646
return new Consumer($this->connector, $this->packager, $this->logger);
4747
}
48+
49+
public function declare(Exchange|array $exchange): void
50+
{
51+
if (is_array($exchange)) {
52+
$exchange = Exchange::create($exchange);
53+
}
54+
55+
$exchange->declare($this->connector->connect());
56+
}
4857
}

tests/Remote/AMQP/TransportTest.php

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use InvalidArgumentException;
88
use Onliner\CommandBus\Remote\AMQP\Connector;
9+
use Onliner\CommandBus\Remote\AMQP\Headers;
910
use Onliner\CommandBus\Remote\AMQP\Packager;
1011
use Onliner\CommandBus\Remote\AMQP\SimpleRouter;
1112
use Onliner\CommandBus\Remote\AMQP\Transport;
@@ -44,28 +45,25 @@ public function testSend(): void
4445
'foo' => 'bar',
4546
]);
4647

47-
$headers = $envelope->headers + [
48-
'x-message-type' => $envelope->class,
49-
];
48+
$headers = new AMQPTable($envelope->headers);
49+
$headers->set(Headers::MESSAGE_TYPE, $envelope->class);
5050

5151
$message = new AMQPMessage($envelope->payload, [
5252
'delivery_mode' => AMQPMessage::DELIVERY_MODE_PERSISTENT,
53+
'application_headers' => $headers,
5354
]);
54-
$message->set('application_headers', new AMQPTable($headers));
5555

5656
$channel = self::createMock(AMQPChannel::class);
5757
$channel
5858
->expects(self::exactly(2))
5959
->method('basic_publish')
60-
->with($message, 'foo', strtolower(str_replace('\\', '.', $envelope->class)), false, false)
61-
;
60+
->with($message, 'foo', strtolower(str_replace('\\', '.', $envelope->class)), false, false);
6261

6362
$connector = self::createMock(Connector::class);
6463
$connector
6564
->expects(self::exactly(2))
6665
->method('connect')
67-
->willReturn($channel)
68-
;
66+
->willReturn($channel);
6967

7068
$transport = new Transport($connector, new Packager(), new SimpleRouter('foo'));
7169
$transport->send($envelope);

0 commit comments

Comments
 (0)