class EventHub::Message
Message
class
Constants
- REQUIRED_HEADERS
Headers that are required (value can be nil) in order to pass valid?
- VERSION
Attributes
body[RW]
header[RW]
raw[RW]
routing_key[RW]
vhost[RW]
Public Class Methods
from_json(raw)
click to toggle source
# File lib/eventhub/message.rb, line 40 def self.from_json(raw) data = JSON.parse(raw) Message.new(data.get("header"), data.get("body"), raw) rescue => e Message.new( { "status" => { "code" => STATUS_INVALID, "message" => "JSON parse error: #{e}" } }, { "original_message_base64_encoded" => Base64.encode64(raw) }, raw ) end
new(header = nil, body = nil, raw = nil)
click to toggle source
# File lib/eventhub/message.rb, line 59 def initialize(header = nil, body = nil, raw = nil) @header = header || {} @body = body || {} @raw = raw # set message defaults, that we have required headers @header.set("message_id", UUIDTools::UUID.timestamp_create.to_s, false) @header.set("version", VERSION, false) @header.set("created_at", now_stamp, false) @header.set("origin.module_id", "undefined", false) @header.set("origin.type", "undefined", false) @header.set("origin.site_id", "undefined", false) @header.set("process.name", "undefined", false) @header.set("process.execution_id", UUIDTools::UUID.timestamp_create.to_s, false) @header.set("process.step_position", 0, false) @header.set("status.retried_count", 0, false) @header.set("status.code", STATUS_INITIAL, false) @header.set("status.message", "", false) end
translate_status_code(code)
click to toggle source
# File lib/eventhub/message.rb, line 154 def self.translate_status_code(code) STATUS_CODE_TRANSLATION[code] end
Public Instance Methods
append_to_execution_history(processor_name)
click to toggle source
# File lib/eventhub/message.rb, line 147 def append_to_execution_history(processor_name) header.set("execution_history", []) unless \ header.get("execution_history") header.get("execution_history") << \ {"processor" => processor_name, "timestamp" => now_stamp} end
copy(status_code = STATUS_SUCCESS)
click to toggle source
copies the message and set's provided status code (default: success), actual stamp, and a new message id
# File lib/eventhub/message.rb, line 135 def copy(status_code = STATUS_SUCCESS) # use Marshal dump and load to make a deep object copy copied_header = Marshal.load(Marshal.dump(header)) copied_body = Marshal.load(Marshal.dump(body)) copied_header.set("message_id", UUIDTools::UUID.timestamp_create.to_s) copied_header.set("created_at", now_stamp) copied_header.set("status.code", status_code) Message.new(copied_header, copied_body) end
initial?()
click to toggle source
# File lib/eventhub/message.rb, line 99 def initial? status_code == STATUS_INITIAL end
invalid?()
click to toggle source
# File lib/eventhub/message.rb, line 107 def invalid? status_code == STATUS_INVALID end
retry?()
click to toggle source
# File lib/eventhub/message.rb, line 95 def retry? status_code == STATUS_RETRY end
retry_pending?()
click to toggle source
# File lib/eventhub/message.rb, line 103 def retry_pending? status_code == STATUS_RETRY_PENDING end
schedule?()
click to toggle source
# File lib/eventhub/message.rb, line 111 def schedule? status_code == STATUS_SCHEDULE end
schedule_pending?()
click to toggle source
# File lib/eventhub/message.rb, line 119 def schedule_pending? status_code == STATUS_SCHEDULE_PENDING end
schedule_retry?()
click to toggle source
# File lib/eventhub/message.rb, line 115 def schedule_retry? status_code == STATUS_SCHEDULE_RETRY end
success?()
click to toggle source
# File lib/eventhub/message.rb, line 91 def success? status_code == STATUS_SUCCESS end
to_json()
click to toggle source
# File lib/eventhub/message.rb, line 123 def to_json {"header" => header, "body" => body}.to_json end
to_s()
click to toggle source
# File lib/eventhub/message.rb, line 127 def to_s "Msg: process "\ "[#{process_name}, #{process_step_position}, #{process_execution_id}]"\ ", status [#{status_code},#{status_message},#{status_retried_count}]" end
valid?()
click to toggle source
# File lib/eventhub/message.rb, line 83 def valid? # check for existence and defined value REQUIRED_HEADERS.all? do |key| @header.all_keys_with_path.include?(key) && !send(key.tr(".", "_").to_sym).nil? end end