Popularity
3.1
Growing
Activity
0.0
Stable
15
4
2
Monthly Downloads: 2
Programming language: Elixir
License: MIT License
Tags:
Queue
adap alternatives and similar packages
Based on the "Queue" category.
Alternatively, view adap alternatives based on common mentions on social networks and blogs.
-
oban
๐ Robust job processing in Elixir, backed by modern PostgreSQL or SQLite3 -
broadway
Concurrent and multi-stage data ingestion and data processing with Elixir -
honeydew
Job Queue for Elixir. Clustered or Local. Straight BEAM. Optional Ecto. ๐ช๐ -
task_bunny
TaskBunny is a background processing application written in Elixir and uses RabbitMQ as a messaging backend -
kaffe
An opinionated Elixir wrapper around brod, the Erlang Kafka client, that supports encrypted connections to Heroku Kafka out of the box. -
opq
Elixir queue! A simple, in-memory queue with worker pooling and rate limiting in Elixir. -
hulaaki
DEPRECATED : An Elixir library (driver) for clients communicating with MQTT brokers(via the MQTT 3.1.1 protocol). -
conduit
A message queue framework, with support for middleware and multiple adapters. -
faktory_worker
Elixir Faktory worker https://hexdocs.pm/faktory_worker -
kafka_consumer
Consumer for Kafka using brod and elixir (production ready) -
exdisque
Elixir client for Disque (https://github.com/antirez/disque), an in-memory, distributed job queue. -
dbus
A dumb message bus for sharing data between microservices in a relatively decoupled mechanism
Clean code begins in your IDE with SonarLint
Up your coding game and discover issues early. SonarLint is a free plugin that helps you find & fix bugs and security issues from the moment you start writing code. Install from your favorite IDE marketplace today.
Promo
www.sonarlint.org
Do you think we are missing an alternative of adap or a related project?
Popular Comparisons
README
ADAP
Awesome (big) Data Augmentation Pipeline
Create a data stream across your information systems to query, augment and transform data according to Elixir matching rules.
See the generated documentation for more detailed explanations.
The principle is:
- to make each element hop from node to node in order to be processed using the locally present data.
- that any node at any time can emit new elements in the pipeline stream
- to construct processing units on each node on demand. They can die at any time to free memory or because of an exception: they will be restarted on demand.
- to pull elements by chunk in order to allow long processing time without the need of any back-pressure mechanism.
Let's see a processing pipe example:
- the input is a product stream : stream of
{:product,%{field1: value1, field2: value2}}
user@jsonserver1
contains a json file "/color.json" containing a COLOR mappinguser@jsonserver2
contains a json file "/size.json" containing a SIZE mapping- you want to map product color and size according to these mappings
- you want to add a field "deleted" when the mapped color is red
Adap.Piper.defpipe ColorPipe, [{ColorPipe.Rules,[]}]
defmodule JSONMap do
use Adap.Unit.Simple, ttl: 1_000
def init(mapping), do:
{:ok,File.read!("/#{mapping}.json") |> JSON.decode!}
def node("color"), do: :"user@jsonserver1"
def node("size"), do: :"user@jsonserver2"
end
defmodule ColorPipe.Rules do
use Adap.Piper, for: :product
defrule map_color(%{color: color}=prod,_) do
{JSONMap,"color"},color_map->
%{prod| color: color_map[color]}
end
defrule map_size(%{size: size}=prod,_) do
{JSONMap,"size"},size_map->
%{prod| size: size_map[size]}
end
defrule red_is_deleted(%{color: "red"}=prod,_) do
Dict.put(prod,:deleted,true)
end
end
result = [
{:product,%{gender: "male", category: "ipad"}},
{:product,%{color: "carmine", category: "shirt"}},
{:product,%{color: "periwinkle", size: "xxl"}}
] |> Adap.Stream.new(ColorPipe) |> Enum.to_list
assert result == [
{:product,%{gender: "male", category: "ipad"}},
{:product,%{color: "red", category: "shirt", deleted: true}},
{:product,%{color: "blue", size: "large"}}
]