hanami / events

[Experimental] Events framework for Hanami
MIT License
43 stars 7 forks source link

How we can help user with different event versions? #17

Open davydovanton opened 7 years ago

davydovanton commented 7 years ago

Should we provide some meta information about an event? For example: We have a legacy system and want to send a new payload in events. We can create something like this:

events = Hanami::Events.build(:kafka)
events.subscribe('*', version: 1.0) { |payload| error 'Old event payload' }
events.subscribe('*', version: 2.0) { |payload| Handler.call(payload) }

events.broadcast('user.updated', version: 2.0, user_id: 1)
GustavoCaso commented 6 years ago

So is like providing a way of filtering?

davydovanton commented 6 years ago

no, it's just a mapping event for specific subscribe by version:

events = Hanami::Events.build(:memory)
events.subscribe('*', version: 1.0) { |payload| puts "version 1" }
events.subscribe('*', version: 2.0) { |payload| puts "version 2" }

events.broadcast('user.updated', version: 2.0, user_id: 1) # => version 2
events.broadcast('user.updated', version: 1.0, user_id: 1) # => version 1