/** * @test */ public function event_is_converted_to_stream_data() { $uuid = new UUID(); $event = new WritableEvent($uuid, 'Foo', ['bar']); $streamData = ['eventId' => $uuid->toNative(), 'eventType' => 'Foo', 'data' => ['bar'], 'metadata' => []]; $this->assertEquals($streamData, $event->toStreamData()); }
public function testSameValueAs() { $uuid1 = new UUID(); $uuid2 = clone $uuid1; $uuid3 = new UUID(); $this->assertTrue($uuid1->sameValueAs($uuid2)); $this->assertFalse($uuid1->sameValueAs($uuid3)); $mock = $this->getMock('ValueObjects\\ValueObjectInterface'); $this->assertFalse($uuid1->sameValueAs($mock)); }
public function createReadModel() { return new Poll(UUID::generateAsString(), 'Poll title'); }
/** * @return array */ public function toStreamData() { return ['eventId' => $this->uuid->toNative(), 'eventType' => $this->type, 'data' => $this->data, 'metadata' => $this->metadata]; }
/** * @param AMQPMessage $message */ public function consume(AMQPMessage $message) { $context = []; if ($message->has('correlation_id')) { $context['correlation_id'] = $message->get('correlation_id'); } if ($this->logger) { $this->logger->info('received message with content-type ' . $message->get('content_type'), $context); } $contentType = new StringLiteral($message->get('content_type')); try { $deserializer = $this->deserializerLocator->getDeserializerForContentType($contentType); $domainMessage = $deserializer->deserialize(new StringLiteral($message->body)); // If the deserializer did not return a DomainMessage yet, then // consider the returned value as the payload, and wrap it in a // DomainMessage. if (!$domainMessage instanceof DomainMessage) { $domainMessage = new DomainMessage(UUID::generateAsString(), 0, new Metadata($context), $domainMessage, DateTime::now()); } $this->delayIfNecessary(); if ($this->logger) { $this->logger->info('passing on message to event bus', $context); } $this->eventBus->publish(new DomainEventStream([$domainMessage])); } catch (\Exception $e) { if ($this->logger) { $this->logger->error($e->getMessage(), $context + ['exception' => $e]); } $message->delivery_info['channel']->basic_reject($message->delivery_info['delivery_tag'], false); if ($this->logger) { $this->logger->info('message rejected', $context); } return; } $message->delivery_info['channel']->basic_ack($message->delivery_info['delivery_tag']); if ($this->logger) { $this->logger->info('message acknowledged', $context); } }
/** * @param object $payload * @param Metadata $metadata */ private function publish($payload, Metadata $metadata) { $message = new DomainMessage(UUID::generateAsString(), 1, $metadata, $payload, DateTime::now()); $domainEventStream = new DomainEventStream([$message]); $this->eventBus->publish($domainEventStream); }
private function publish($payload) { $this->enricher->handle(DomainMessage::recordNow(UUID::generateAsString(), 0, new Metadata(), $payload)); }