2017-04-02 3 views
1

Es gibt eine Möglichkeit, exq als eigenständige App auszuführen: https://github.com/akira/exq#standalone-exq. Aber die Sache ist, dass ich nicht wirklich verstehe, wie es funktioniert. Wenn exq als Abhängigkeit zu meiner Phönix-App hinzugefügt wird, wird es bereits ausgeführt, wenn ich meine Anwendung ausführe. Ich kann Jobs in die Warteschlange stellen und sie rennen. Meine Frage ist also, wie kann ich es nicht zusammen mit meiner Anwendung ausführen, sondern es als separate App ausführen? (z. B. ist es möglich, es auf einem separaten Arbeiter auf Heroku auszuführen).Standalone Exq in Phoenix

+0

I Denken Sie, Sie müssen einfach ': exq' aus der Liste der Anwendungen in' mix.exs' entfernen? – Dogbert

+0

Wenn ich das tue (nun, nicht genau das, ich habe versucht, 'runtime: false' zu ​​exq Eintrag in' Deps' hinzuzufügen) kann ich keine Jobs mehr in die Warteschlange stellen. Ich bekomme '** (EXIT) keinen Prozess: der Prozess ist nicht lebendig oder es ist kein Prozess derzeit mit dem gegebenen Namen verbunden, möglicherweise weil seine Anwendung nicht gestartet ist 'Fehler –

Antwort

3

Versuchen Sie, Exq in der Phoenix-App auszuführen, mit der Möglichkeit, in die Warteschlange einzureihen, aber nicht die Jobs in diesem Fall ausführen?

ist es zwei Möglichkeiten:

1) Sie können Exq auf nur in Enqueuer Modus zu starten. Damit können Sie es in den mix.exs belassen. Um dies zu tun, die configs ändern:

config :exq, 
    ... 
    mode: :enqueuer, 
    ... 

Sie können dann Enqueue mit:

Exq.enqueue(Exq.Enqueuer, "default", HelloWorker, [])

2) Sie können die Warteschlangen deaktivieren, so dass es keine Warteschlangen sind offene Ohren zu stoßen:

config :exq, 
    ... 
    queues: [], 
    ... 

können Sie wie gewohnt verwenden von Einreihen Exq.enqueue(Exq, "default", HelloWorker, [])

+0

genial, das ist genau das, was ich brauche. und danke für die lib! –