Procesory¶
Czym jest procesor?¶
Procesor jest klasą, która implementuje metody wywołujące procesy zaimplementowane przez nas. Przykładowo wysłanie wiadomości będzie rozdzielone na kilka procesów, takich jak: zbudowanie wiadomości, definiowanie miejsca wysyłki, wysyłka wiadomości. Procesy te wywołane zostaną w metodzie process(), która jest zaimplementowana w interfejsie procesora.
Tworzenie procesora¶
Procesor tworzymy poprzez utworzenie nowej klasy z sufiksem Processor, przykładowo SendMessageProcessor. Klasa ta implementuje interfejs o nazwie Processor.
<?php
class SendMessageProcessor implements Processor {
public function process(Exchange $exchange) {
//...
}
}
?>
Powyższy kod pokazuje przykładową zawartość klasy procesora.
Uruchamianie procesora¶
Stworzoną klase procesora wywołujemy poprzez wrzucenie jej do rurociągu za pomocą metody add().
<?php
Pipeline::start()
->add(new SendMessageProcessor())
->process();
?>
Jak przetworzyć treść wiadomości do formatu JSON?¶
Aby przetworzyć treść wiadomości najlepiej będzie skorzystać z gotowych procesorów zaimplementowanych w kliencie PHP. W tym wypadku skorzystamy z procesora o nazwie MarshalProcessor, który przetwarza wiadomości na różne formaty. Przypuśćmy, że wrzuciliśmy już gotową wiadomość za pomocą procesora SendMessageProcessor do rurociągu i mamy aktualnie następujący kod.
<?php
Pipeline::start()
->add(new SendMessageProcessor())
->process();
?>
Teraz, by przekonwertować wiadomość do formatu JSON wystarczy dodać nową instancje procesora MarshalProcessor ustawiając typ konwertowania na dany format i wiadomość, która przechodzi przez rurociąg zostanie przetworzona na żądany typ. W praktyce wygląda to mniejwięcej tak:
<?php
Pipeline::start()
->add(new SendMessageProcessor())
->add(MarshalProcessor::withDataFormat(new JsonDataFormat()))
->process();
?>
Wiadomość wysyłana przez procesor SendMessageProcessor trafia do kolejnego procesora, który formatuje ją na sprecyzowany klasą o nazwie JsonDataFormat format.