2016-09-15 20 views
3

Gibt es eine Möglichkeit zu wissen, wann Algolia einen Job in der Warteschlange erfolgreich verarbeitet hat oder ob Algolia neue Dokumente im Vergleich zum letzten Re-Index indiziert hat?Algolia Real-time Webhooks

Wir möchten ein System erstellen, das jedes Mal, wenn ein neues Dokument indiziert wird, Benutzer, die die Website durchsuchen, in Echtzeit vor dem Update warnen und die neuen Sachen auschecken.

Ist so etwas möglich?

Wenn nicht, gibt es einen Workaround, um dies zu ermöglichen?

+0

Bezieht sich diese Frage auf die Integration von Algolia für Shopify? Wenn nicht, ist das Warten auf einen Algolia-Job so einfach wie die Verwendung von ['wait_task'] (https://www.algolia.com/doc/api-client/ruby/indexing#wait-for-opera- tions) mit der' taskID' welches in der Antwort der API auf alle Indexierungsoperationen vorhanden ist. – Jerska

+0

Nein, dies ist keine Frage für die Integration von Shopify, sondern eine interne Integration von Algolia in unseren Closed-Source-E-Commerce. Die 'wait_task' hingegen zwingt mich, einen Pooling-Timer zu erstellen, um zu prüfen, ob ein Job abgeschlossen ist. Ein Webhook würde stattdessen unsere Server direkt warnen. – GiamPy

Antwort

3

Sie haben völlig Recht, Webhooks könnten definitiv Sinn ergeben. Leider bietet Algolia keine solche Funktion, Sie müssen sich auf Abfragen verlassen.

Aufträge, die Sie an Algolia senden, werden nacheinander ausgeführt. Eine relativ einfache Lösung wäre, jeden Job mit der zugehörigen Aktion in einer Warteschlange zu speichern: Sie können einen dedizierten Prozess haben, dessen einzige Rolle darin besteht, unendlich auf die erste taskID der Warteschlange zu warten und die Aktion auszuführen, sobald sie zurückkehrt.

+0

Wir verwenden Laravel in unserem Unternehmen, und die Lösung, die Sie vorgeschlagen haben, ist sehr schwer sauber zu erreichen. Updates oder Hinzufügungen zu Algolia-Indizes werden automatisch über [AlgoliaEloquentTrait] (https://github.com/algolia/algoliasearch-laravel-4/blob/master/src/AlgoliaEloquentTrait.php) abgewickelt, das automatisch nach Updates sucht und diese weiterleitet zum Server. Ich kann nicht direkt auf die 'taskID' zugreifen, da es sich um ein Ereignis handelt. – GiamPy

+1

Dann schätze ich, dass Sie in die Grenzen der Abstraktion geraten. Mit dem PHP-Client direkt, haben Sie kein Problem, was Sie wollen, es dauert nur ein bisschen mehr Zeit (https://www.algolia.com/doc/api-client/php/getting-started) . Sie können auch versuchen, ein Problem auf algolesearch-laravel direkt zu öffnen. – Jerska