Class: EventHub::Message
- Inherits:
-
Object
- Object
- EventHub::Message
- Includes:
- Helper
- Defined in:
- lib/eventhub/message.rb
Overview
Message class
Constant Summary collapse
- VERSION =
"1.0.0".freeze
- REQUIRED_HEADERS =
Headers that are required (value can be nil) in order to pass valid?
[ "message_id", "version", "created_at", "origin.module_id", "origin.type", "origin.site_id", "process.name", "process.step_position", "process.execution_id", "status.retried_count", "status.code", "status.message" ].freeze
Instance Attribute Summary collapse
-
#body ⇒ Object
Returns the value of attribute body.
-
#header ⇒ Object
Returns the value of attribute header.
-
#raw ⇒ Object
Returns the value of attribute raw.
-
#routing_key ⇒ Object
Returns the value of attribute routing_key.
-
#vhost ⇒ Object
Returns the value of attribute vhost.
Class Method Summary collapse
Instance Method Summary collapse
- #append_to_execution_history(processor_name) ⇒ Object
-
#copy(status_code = STATUS_SUCCESS) ⇒ Object
copies the message and set’s provided status code (default: success), actual stamp, and a new message id.
- #initial? ⇒ Boolean
-
#initialize(header = nil, body = nil, raw = nil) ⇒ Message
constructor
A new instance of Message.
- #invalid? ⇒ Boolean
- #retry? ⇒ Boolean
- #retry_pending? ⇒ Boolean
- #schedule? ⇒ Boolean
- #schedule_pending? ⇒ Boolean
- #schedule_retry? ⇒ Boolean
- #success? ⇒ Boolean
- #to_json ⇒ Object
- #to_s ⇒ Object
- #valid? ⇒ Boolean
Methods included from Helper
#create_bunny_connection, #get_name_from_class, #now_stamp, #stringify_keys
Constructor Details
#initialize(header = nil, body = nil, raw = nil) ⇒ Message
Returns a new instance of Message.
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# 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..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..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 |
Instance Attribute Details
#body ⇒ Object
Returns the value of attribute body.
25 26 27 |
# File 'lib/eventhub/message.rb', line 25 def body @body end |
#header ⇒ Object
Returns the value of attribute header.
25 26 27 |
# File 'lib/eventhub/message.rb', line 25 def header @header end |
#raw ⇒ Object
Returns the value of attribute raw.
25 26 27 |
# File 'lib/eventhub/message.rb', line 25 def raw @raw end |
#routing_key ⇒ Object
Returns the value of attribute routing_key.
25 26 27 |
# File 'lib/eventhub/message.rb', line 25 def routing_key @routing_key end |
#vhost ⇒ Object
Returns the value of attribute vhost.
25 26 27 |
# File 'lib/eventhub/message.rb', line 25 def vhost @vhost end |
Class Method Details
.from_json(raw) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# 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 |
.translate_status_code(code) ⇒ Object
154 155 156 |
# File 'lib/eventhub/message.rb', line 154 def self.translate_status_code(code) STATUS_CODE_TRANSLATION[code] end |
Instance Method Details
#append_to_execution_history(processor_name) ⇒ Object
147 148 149 150 151 152 |
# 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) ⇒ Object
copies the message and set’s provided status code (default: success), actual stamp, and a new message id
135 136 137 138 139 140 141 142 143 144 145 |
# 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..to_s) copied_header.set("created_at", now_stamp) copied_header.set("status.code", status_code) Message.new(copied_header, copied_body) end |
#initial? ⇒ Boolean
99 100 101 |
# File 'lib/eventhub/message.rb', line 99 def initial? status_code == STATUS_INITIAL end |
#invalid? ⇒ Boolean
107 108 109 |
# File 'lib/eventhub/message.rb', line 107 def invalid? status_code == STATUS_INVALID end |
#retry? ⇒ Boolean
95 96 97 |
# File 'lib/eventhub/message.rb', line 95 def retry? status_code == STATUS_RETRY end |
#retry_pending? ⇒ Boolean
103 104 105 |
# File 'lib/eventhub/message.rb', line 103 def retry_pending? status_code == STATUS_RETRY_PENDING end |
#schedule? ⇒ Boolean
111 112 113 |
# File 'lib/eventhub/message.rb', line 111 def schedule? status_code == STATUS_SCHEDULE end |
#schedule_pending? ⇒ Boolean
119 120 121 |
# File 'lib/eventhub/message.rb', line 119 def schedule_pending? status_code == STATUS_SCHEDULE_PENDING end |
#schedule_retry? ⇒ Boolean
115 116 117 |
# File 'lib/eventhub/message.rb', line 115 def schedule_retry? status_code == STATUS_SCHEDULE_RETRY end |
#success? ⇒ Boolean
91 92 93 |
# File 'lib/eventhub/message.rb', line 91 def success? status_code == STATUS_SUCCESS end |
#to_json ⇒ Object
123 124 125 |
# File 'lib/eventhub/message.rb', line 123 def to_json {"header" => header, "body" => body}.to_json end |
#to_s ⇒ Object
127 128 129 130 131 |
# 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? ⇒ Boolean
83 84 85 86 87 88 89 |
# 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 |