/**
  * @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());
 }
Example #2
0
 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));
 }
Example #3
0
 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));
 }