ecto_job v3.1.0 Release Notes
Release Date: 2020-09-16 // over 4 years ago-
๐ Version 3.1.0 adds
- ๐ support for storing jobs in MySQL 8, thanks @jeanparpaillon !
- ๐ท persisting job params as an Elixir/Erlang term, thanks @lukyanov !
You can insert any arbitrary Elixir/Erlang term into the queue:
{"SendEmail", "[email protected]", "Welcome!"}|\> MyApp.JobQueue.new()|\> MyApp.Repo.insert()
You should use the option :params_type when defining your queue module:
defmodule MyJobQueue douse EctoJob.JobQueue, table\_name: "jobs", params\_type: :binary# ...end
0๏ธโฃ Possible values of the option are: :map (default) and :binary (for storing Elixir/Erlang terms).
You should use the same option when setting up the migration:
@ecto\_job\_version 3def up doEctoJob.Migrations.Install.up() EctoJob.Migrations.up("jobs", version: @ecto\_job\_version, params\_type: :binary)end
Previous changes from v3.0.0
-
๐ Version 3.0 adds support for prioritizing jobs within each job queue. ๐ท The
priority
option can be given when creating a Job:%{"type" => "SendEmail", "address" => "[email protected]", "body" => "Welcome!"} |> MyApp.JobQueue.new(priority: 2, max_attempts: 2) |> MyApp.Repo.insert()
0๏ธโฃ Lower numbers run first, the default value is 0.
Thanks to ramondelemos for contibuting this feature!
๐ท #45 - gabriel128 Failed jobs will retry before the full
execution_timeout
when an error occurs. By default the first retry will occur 30 seconds after failure.Thanks to gabriel128 for contributing this feature!
Migrating to 3.0
โก๏ธ To upgrade to version 3.0 you must add a migration to update the pre-existent job queue tables:
mix ecto.gen.migration update_job_queue
defmodule MyApp.Repo.Migrations.UpdateJobQueue do use Ecto.Migration @ecto_job_version 3 def up do EctoJob.Migrations.UpdateJobTable.up(@ecto_job_version, "jobs") end def down do EctoJob.Migrations.UpdateJobTable.down(@ecto_job_version, "jobs") end end