service - How to publish data changes between databases within RabbitMQ? -


suppose have 2 applications a , b own different databases a1 (mysql) , b1 (postgres) correspondingly. create entities x , y associated each other in application a. y belongs x. on every insert database a1 (after commit) publish message rabbitmq make application b aware of brand new entities. 1 event per entity – x1 , y1. good, if rabbitmq keeps order of messages, workers in application b may process x1 first , y1 second establish right association between new a , b records in database b1. far understand rabbitmq not intended keep messages order , in specific circumstances, publish within 1 channel, send 1 exchange, push 1 queue, consume within 1 channel.

so question correct direction , general approach:

  1. should choose message queue, guarantees messages order?
  2. have missed specific in rabbitmq messages order specifics?
  3. should implement kind of retry mechanism in application b side, re-enqueue messages rabbitmq in case if message order not expected?

maybe give more sensible context – b1 data warehouse, aggregates data not a1, other databases.

everything good, if rabbitmq keeps order of messages

is solution? can't x , y instances sequence number assigned, used rebuild right sequence within b?

to establish right association between new , b records

can't x1, y1 express explicit relation allowing creation of a, b without relying on sequence?

the point is: message ordering expensive. either have hard constraints (e.g. 1 consumer) or have less availability , speed. best bet finding way not rely on order.


Comments

Popular posts from this blog

angular - Ionic slides - dynamically add slides before and after -

minify - Minimizing css files -

Add a dynamic header in angular 2 http provider -