Pub
Performs interactions with EventBus
Initial creation
This library is created with the following command:
mix new --module Pub --sup --app lib_event_bus lib-eventbus
Installation
Add in your mix.exs
:
defp deps do
[
# another packages here ...
{:lib_event_bus, "0.1.0", organization: "rentbrella"}
]
end
Configuration
Environment variables
This library depends of the following environment variables to work correctly:
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SQS_QUEUE
AWS_SNS_TOPIC_ARN
Callback functions
Configure callback functions according bellow:
config :lib_elixir_eventbus,
callbacks: [
{"event1", &MyCoolModule.my_func1/1},
{"event2", &MyCoolModule.my_func2/1},
{"event3", &MyCoolModule.my_func3/1}
]
These functions will be called whenever a new message is arrived by SQS. The argument of this function will be a struct %SQSMessage{}
representing the received message.
Note that is possible set up different functions for different events.
Usage
Publishing a message
alias Pub
alias Pub.Event
{:ok, event} = Event.new("event1", %{"user_id" => 1})
EventBus.publish(event)
Receiving a message
alias Pub
EventBus.get_message()