Posnet Server – Azure Service Bus Queue

Od wersji 4.0 Posnet Server wspiera mechanizm pluginów umożliwiając rozszerzanie możliwości produktu. Pluginy są częścią paczki instalacyjnej i nie wymagają pobierania lub instalowania dodatkowych plików z internetu. Domyślnie wszystkie pluginy są wyłączone.

Wprowadzenie

Azure Service Bus, działający na chmurze Microsoft Azure, jest to usługą kolejkową, umożliwiającą budowanie zaawansowanych kolejek z mechanizmami routowania wiadomości, TTL, DLQ itp. Podobnie jak RabbitMQ usługa działa na bazie protokółu AMQP.

PosnetServer udostępnia RESTful API, czyli komunikację synchroniczną, a dzięki możliwości podłączenia go do usługi Azure Service Bus możemy zamodelować komunikację asynchroniczną. Do tej pory PosnetServer wspierał bardzo prosty mechanizm asynchronicznej komunikacji, przechowując kolejkę dokumentów oczekującą na wydrukowanie w pamięci. To rozwiązanie miało swoje ograniczenia. Przykładowo, restart serwisu powodował wyczyszczenie kolejki, jak również praca z dużym wolumenem wiadomości wymuszała loadbalancing i tak po stornie aplikacji.

Konfiguracja

W pliku konfiguracyjnym w sekcji plugin znajduje się pod-sekcja “azure-service-bus”. Po każdej zmianie w pliku config.json, należy zrestartować usługę PosnetServer.

  • enabled (domyślnie false) – włącza, wyłącza plugin
  • reinitOnError (domyślnie true) – czy komunikacja ma być ponawiana automatycznie w przypadku błędów komunikacji z Azure Service Bus. Jeśli “false”, wówczas ponowne nawiązanie komunikacji wymaga restartu serwisu.
  • reinitDelay (domyślnie 2000) – czas opóźnienia liczony w ms na reinicjalizację. Używany jedynie jeśli reinitOnError=”true”
  • input.connectionstring – jest to connection string pobrany z Shared access policies w usłudze Azure
  • input.queuename – nazwa używanej kolejki
  • input.autoack (domyślnie false) – praca w trybie automatycznego potwierdzania wiadomości. Zalecany jest tryb manualny, czyli autoack=false
  • output.active (domyślnie false) – włączenie, wyłączenie kolejki do asynchronicznego wysyłania odpowiedzi. Gdy output.active=true, PosnetServer wysyła na tę kolejkę wynik przetwarzania wiadomości, czyli numer wydrukowanego paragonu lub status błędu. Aby wiadomo było jakiego requestu dotyczy odpowiedź, należy w requescie wykorzystać strukturę “clientdata”.
  • output.connectionstring – jest to connection string pobrany z Shared access policies w usłudze Azure
  • output.queuename – nazwa używanej kolejki
  • service.connectionstring – jest to connection string pobrany z Shared access policies w usłudze Azure. Kolejka serwisowa może służyć do wysyłania dodatkowych poleceń, np “pause” lub “resume” wiadomości wysyłanych na kolejkę “input”
  • service.queuename – nazwa używanej kolejki
  • service.autoack (domyślnie false) – praca w trybie automatycznego potwierdzania wiadomości. Zalecany jest tryb manualny, czyli autoack=false

KONFIGURACJA AZURE SERVICE BUS

Wejdź do usługi Azure Service Bus:

Utwórz namespace:

Wewnątrz namespace utwórz jedną lub dwie kolejki:

Wysyłanie requestów

Kliknij na kolejkę wejściową i z bocznego menu wybierz “Service Bus Explorer”

Wybierz “Send messages”. W pole “Body” należy wprowadizć payload zgodny ze schemą PosnetServer. Domyślnie payload traktowany jest jak schema pojedynczego paragonu, stąd podawanie w custom properies “path” jets opcjonalne.

Można również wysyłać polecenia /faktura lub /command, w następujący sposób:

Kolejka serwisowa

Wiadomości wysyłane są przez Azure Service Bus do aplikacji (model PUSH). Stad, czasem może zajść potrzeba chwilowego wstrzymania konsumpcji wiadomości z kolejki “input”. Można tego dokonać za pomocą API lub wysyłając komunikat na kolejkę serwisową:

Share This

What's your reaction?
0Smile0Lol0Wow0Love0Sad0Angry

Leave a comment