lennart

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

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

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

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.

Where Next?

Popular in Questions Top

Tee
can someone please explain to me how Enum.reduce works with maps
New
bsollish-terakeet
Credo is smart enough to check for (something like) this: assert length(the_list) == 0 with this response: Checking if an enum is empt...
New
gshaw
What is the idiomatic way of matching for not nil in Elixir? E.g., First way: defp halt_if_not_signed_in(conn, signed_in_account) when...
New
logicmason
Hi there, I'm working through my first release with elixir/phoenix. I've built a release with distillery and found that it crashes when I...
New
Kagamiiiii
Student &amp; New to elixir. Nice language. I want to convert a english character, e.g. “a”, which is stored in a variable, to it’s asci...
New
dokuzbir
Hello, I am trying to convert my lists to string without losing brackets.For start i have 3 map. They look like these buyer = %{ id: ...
New
vertexbuffer
Hello, can anybody help here..? I have a list of players and I what to delete an element, but every for loop the list is reverting to ori...
New
qwerescape
Is there a way to get the call stack or stack trace at any point in the code? Not from exceptions, but an expression that returns how the...
New
baxterw3b
Hi guys, i’m new in the Elixir world, and i have to say, that i love it! i’m having some problem to understand anonymous functions with ...
New
sabri
Can someone explain the settings of pool_size of Ecto in config file? and what is the recommend size? Thanks
New

Other popular topics Top

shahryarjb
Hello, I get Persian date from my client and convert it to normal calendar like this: def jalali_string_to_miladi_english_number(persi...
New
JakeBecker
TL;DR: I’ve just released an implementation of Microsoft’s IDE-independent Language Server Protocol for Elixir. It adds language support ...
1140 51847 244
New
albydarned
Hello all! I am typing this post from my new MacBook Pro with the M1 chip. I’m loving it so far, and will probably use it as my daily dr...
New
itssasanka
Hi all, Trying to get some more clarity over utc_datetime and naive_datetime for Ecto: https://hexdocs.pm/ecto/Ecto.Schema.html#module-...
New
sergio_101
I am VERY much an elixir newbie. I have taken one elixir course and one phoenix course on Udemy. During that course, I saw the instructor...
New
malloryerik
Hi, this is for people who, like me, have had some friction using .html.heex templates in VSCode. The solution seems to be, in a hyphena...
New
jononomo
I am trying to figure out how Mix knows whether the environment is test, dev, or prod -- where is this set? Thanks.
New
chrismccord
As promised, the first release candidate of Phoenix 1.3.0 is out! This release focuses on code generators with improved project structure...
New
qwerescape
Is there a way to get the call stack or stack trace at any point in the code? Not from exceptions, but an expression that returns how the...
New
shahryarjb
Hello, I have map which I want to convert it to string like this: the map: %{last_name: "tavakkoli", name: "shahryar"} the string I ne...
New

We're in Beta

About us Mission Statement