class PubSubModelSync::ServiceBase

Constants

SERVICE_KEY

Public Instance Methods

listen_messages() click to toggle source
# File lib/pub_sub_model_sync/service_base.rb, line 8
def listen_messages
  raise NoMethodError, 'method :listen_messages must be defined in service'
end
publish(_payload) click to toggle source

@param _payload (Payload)

# File lib/pub_sub_model_sync/service_base.rb, line 13
def publish(_payload)
  raise NoMethodError, 'method :publish must be defined in service'
end
stop() click to toggle source
# File lib/pub_sub_model_sync/service_base.rb, line 17
def stop
  raise NoMethodError, 'method :stop must be defined in service'
end

Private Instance Methods

decode_payload(payload_info) click to toggle source

@return Payload

# File lib/pub_sub_model_sync/service_base.rb, line 45
def decode_payload(payload_info)
  payload = ::PubSubModelSync::Payload.from_payload_data(JSON.parse(payload_info))
  log("Received message: #{[payload]}") if config.debug
  payload
end
encode_payload(payload) click to toggle source

@param payload (Payload) @return (String): Json Format

# File lib/pub_sub_model_sync/service_base.rb, line 25
def encode_payload(payload)
  data = payload.to_h
  not_important_keys = %i[ordering_key topic_name forced_ordering_key]
  reduce_payload_size = !config.debug
  data[:headers].except!(*not_important_keys) if reduce_payload_size
  data.to_json
end
process_message(payload_info) click to toggle source

@param (String: Payload in json format)

# File lib/pub_sub_model_sync/service_base.rb, line 34
def process_message(payload_info)
  payload = decode_payload(payload_info)
  return payload.process unless same_app_message?(payload)

  log("Skipping message from same origin: #{[payload]}") if config.debug
rescue => e
  error_payload = [payload, e.message, e.backtrace]
  log("Error while starting to process a message: #{error_payload}", :error)
end
same_app_message?(payload) click to toggle source

@param payload (Payload)

# File lib/pub_sub_model_sync/service_base.rb, line 52
def same_app_message?(payload)
  key = payload.headers[:app_key]
  key && key == config.subscription_key
end