Ich habe PHP-Anwendung, die Kafka-Nachrichten verbraucht. Das Problem ist, wie man weiß, dass es neue Nachrichten in Kafka gibt? Die erste Lösung besteht darin, einen Benutzer in PHP zu erstellen und ihn dann in einer Schleife auszuführen, um neue Nachrichten zu prüfen. So etwas wie dasKafka - wie man nach neuen Nachrichten sucht
<?php
namespace MyAppBundle\Command;
use MyAppBundle\EventSourcing\EventSerializer\JSONEventSerializer;
use MyAppBundle\Service\EventProjectorService;
use MyAppBundle\Service\KafkaService;
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Process\Exception\RuntimeException;
class EventCommand extends ContainerAwareCommand
{
protected function configure()
{
$this
->setName('events:fetch');
}
protected function execute(InputInterface $input, OutputInterface $output)
{
/** @var KafkaService $kafkaService */
$kafkaService = $this->getContainer()->get('store_locator.kafka_service');
/** @var EventProjectorService $eventProjector */
$eventProjector = $this->getContainer()->get('store_locator.event_projector');
while(1){
$messages = $kafkaService->fetchEvents();
foreach ($messages as $message) {
$eventProjector->aggregate($message);
}
}
$output->writeln("Finish");
}
}
Aber ich mag es nicht ... Gibt es einen anderen Weg?
Wenn es keinen besseren Weg gibt, wie man es am Laufen hält? Zum Beispiel wenn etwas fehlschlägt.
Ich bin im Moment auf der Suche nach einer Symfony/Kafka-Lösung. Gibt es eine Chance, dass Sie Ihren Kafka-Service-Code teilen können? – nealio82
@Nealio Ich weiß nicht, was Sie genau brauchen, aber ich benutze 'nmred/kafka-php' Paket und implementiere alles wie in der README beschrieben. – PiotrCh