lennart
Struggle setting up Quantum to send monthly notifications
Hello dear Elixir enthusiasts,
excuse my possible nooby coding, i’m new to the elixir/erlang world.
I’m currently trying to setup an application which will send monthly/daily reports via email.
I managed to get the part working where an email gets send etc. but i failed to setup a scheduler which performs a task to send the email periodically or at a specific date.
I tried it with quantum because it was the most recommended!
Because it did not work inside my existing application i tried to set quantum up from scratch on a fresh native elixir project by following this documentation hexdocs.pm/quantum/, naming it
:quantum_example
This is the code i used (it looks nearly like the one of the documentation):
the deps part of mix.exs:
defp deps do
[
{:quantum, "~> 3.0"}
# {:dep_from_hexpm, "~> 0.3.0"},
# {:dep_from_git, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"}
]
end
The scheduler:
defmodule QuantumExample.Scheduler do
use Quantum, otp_app: :quantum_example
end
The application’s supervision tree:
defmodule QuantumExample.Application do
use Application
def start(_type, _args) do
import Supervisor.Spec, warn: false
children = [
QuantumExample.Scheduler
]
opts = [strategy: :one_for_one, name: Quantum.Supervisor]
Supervisor.start_link(children, opts)
end
end
And to test its functionality i set up this config with IO.puts stuff to see if it is doing where i want it to do it:
import Config
config :logger, level: :debug
config :quantum_example, QuantumExample.Scheduler,
jobs: [
{"@secondly", fn -> IO.puts("this is a secondly testoutput!") end},
{"@minutely", fn -> IO.puts("this is a minutely testoutput!") end},
]
My Problem is that it does not even do anything at all. the quantum_example application starts (iex -S mix or mix run --no-halt) without any error but neither every second nor every minute i get an IO.puts output. Not even the logger gives something. Not even saying a job got added or startet or failed.
I am sure I just failed to do the configuration properly. It feels like quantum does not even get started…
Btw I am on Elixir 1.10 and used quantum 3.0.
I appreciate any form of advise what to try out or where I took a wrong turn!
Thanks in advance everybody (:
Marked As Solved
hauleth
In your mix.exs in your application/0 function you need to have mod: {QuantumExample.Application, []}. So your mix.exs will look something like:
defmodule QuantumExample.Mixproject do
# …
def application do
[
mod: {QuantumExample.Application, []}
]
end
# …
end
Also Liked
kokolegorille
Hello and welcome,
Well, it looks good, I reproduced it by just copy/paste your topic and it worked.
18:21:27.891 [debug] [:nonode@nohost][Elixir.Quantum.Executor] Task for job #Reference<0.1224732984.3074162690.196567> started on node nonode@nohost
this is a secondly testoutput!
Did You create the project with --sup?
Do You have a /config/config.exs, with name ending with .exs?
kokolegorille
Is it an umbrella project?
If yes it will be easy, if not You can package into a module, and add to dependencies…
Or just copy file, and configure accordingly.







