Class: Synapse::Partitioning::JsonMessageUnpacker

Inherits:
MessageUnpacker show all
Defined in:
lib/synapse/partitioning/packing/json_unpacker.rb

Overview

Implementation of a message unpacker that unpacks messages that come off the wire in the format described by JsonMessagePacker

Instance Method Summary collapse

Constructor Details

#initialize(serializer) ⇒ undefined

Parameters:

  • serializer (Serializer)


8
9
10
# File 'lib/synapse/partitioning/packing/json_unpacker.rb', line 8

def initialize(serializer)
  @serializer = serializer
end

Instance Method Details

#unpack_message(message) ⇒ Message

Parameters:

  • packed (String)

Returns:



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/synapse/partitioning/packing/json_unpacker.rb', line 14

def unpack_message(message)
  packed = JSON.load message
  packed.symbolize_keys!

  message_type = packed.fetch(:message_type).to_sym
  builder = builder_for(message_type).new

  builder.id = packed.fetch :id
  builder. =  packed
  builder.payload = deserialize_payload packed

  if [:event, :domain_event].include? message_type
    timestamp = packed.fetch :timestamp
    builder.timestamp = Time.at timestamp
  end

  if :domain_event == message_type
    builder.aggregate_id = packed.fetch :aggregate_id
    builder.sequence_number = packed.fetch :sequence_number
  end

  builder.build
end