Applogic follows the naming conventions defined in Peatio and Barong. All the events produced by the servers can be listened by Applogic.
See Peatio docs here and Barong here
AppLogic submits all events into three exchanges depending on event category (read next).
The exchange name consists of three parts:
1) application name, like applogic
, peatio
, barong
.
2) fixed keyword events
.
3) category of event, like system
(generic system event), model
(the attributes of some record were updated), market
(trading events), user
(user events).
The routing key looks like transaction.success
.
The event name matches the routing key but with event category appended at the beginning, like model.transaction.success
.
Event consumer should respond to call(event)
and be defined at app/consumers
.
Consumer class name must be defined as:
[Application name]::[Event category]::[Event name]Consumer
Example (at app/consumers/barong/model/account_created_consumer.rb
):
# frozen_string_literal: true
module Barong
module Model
class AccountCreatedConsumer
def call(event)
token = event[:record][:confirmation_token]
email = event[:record][:email]
BarongMailer.verification_email(email, token).deliver_now
end
class << self
def call(event)
new.call(event)
end
end
end
end
end
You can replace Barong
with Peatio
, update event name so you can handle events from Peatio
.
You need to set new variables:
EVENT_API_RABBITMQ_URL: ~
EVENT_API_RABBITMQ_HOST: localhost
EVENT_API_RABBITMQ_PORT: '5672'
EVENT_API_RABBITMQ_USERNAME: guest
EVENT_API_RABBITMQ_PASSWORD: guest
BARONG_EVENT_API_JWT_PUBLIC_KEY: ~ # Mandatory.
BARONG_EVENT_API_JWT_ALGORITHM: RS256 # JWT signing algorithm (mandatory).
BARONG_EVENT_API_JWT_ISSUER: ~ # JWT issuer name (optional).
BARONG_EVENT_API_JWT_AUDIENCE: ~ # Optional.
BARONG_EVENT_API_JWT_SUBJECT: ~ # Optional.
BARONG_EVENT_API_JWT_DEFAULT_LEEWAY: ~ # Seconds (optional).
BARONG_EVENT_API_JWT_ISSUED_AT_LEEWAY: ~ # Seconds (optional).
BARONG_EVENT_API_JWT_EXPIRATION_LEEWAY: ~ # Seconds (optional).
BARONG_EVENT_API_JWT_NOT_BEFORE_LEEWAY: ~ # Seconds (optional).
The event listener is defined as Rake task.
Use the next command to run event listener:
EVENT_API_APPLICATION=barong EVENT_API_EVENT_CATEGORY=model EVENT_API_EVENT_NAME=account.created bundle exec rake event_api_listener