Hi guys, I wanted to discuss the new Queueing API for those of us who are implementing an out-of-process version. In my case, I write Sidekiq [1] and would like to support the new API once Rails 4 is released. My issue is that because the API is object-oriented rather than message-oriented, implementation of out-of-process workers is difficult.
The API is Queue#push(job) where job has a run method. Ruby doesn't have a great solution for serializing a Ruby object across the wire. Marshal limits the API to Ruby solutions (which rules out RabbitMQ, et al), JSON can't fully serialize Ruby objects (e.g. symbols) and YAML has a number of issues in practice that make it painful to use (e.g. see the monkeypatches DelayedJob has to use [2]). So I love the simplicity of the API but think it will lead to painful implementation issues. What do you think about defining a simpler message format that can be fully serialized and deserialized via JSON / YAML / etc instead of using a Ruby object? mike [1] http://mperham.github.com/sidekiq/ [2] https://github.com/collectiveidea/delayed_job/blob/master/lib/delayed/psych_ext.rb -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-core?hl=en.
