69626 (2) [Avatar] Offline
I almost finished the current version of MEAP book (last update: Oct 20, 2016).

I think that books looks great, but I wanted to provide some feedback.

I was particularly interested in the chapter of database integration. Although I really enjoyed learning about pg_amqp, I feel the chapter did not offer the solutions I was looking for.

The problem is precisely that the chapter is centered around the use of pg_amqp as way of integration with the database, but in the section named Dealing with Failure, it is indicated that it pretty much sucks when you need to guarantee delivery of messages. Basically all we have learned so far in the book regarding publishing confirms and transactions is simply ignored with this plugin. For any scenario where you simply cannot afford to lose messages this solutions is totally impractical. And I can't but wonder, so how do I do database integration? and what if I am not using Postgresql?

So, I was a bit disappointed that that the chapter offers no advice on how to do database integration with any database, not just Postgresql with pg_amqp.

For example, I was hoping the book would delve into explanations of how to things like the following :

* How to avoid the need of a 2PC between the database and the Rabbit system when publishing and consuming messages
* In a database scenario where you need to do a local database transaction and then publish a corresponding message for that event, how can you guarantee delivery of messages with publisher confirms?
* Particularly with publisher confirms I have always struggled with how to do the republishing of of messages when a message is not acknowleged and you had a database transaction already committed that was supposed to send a message.
* How do you deal with the fact that either the database or Rabbit might fail at any point during the coordination of publishing a message product of a database transaction, or acknowledging the consumption of a message after a database transaction?
* When you're consuming messages, how to handle acknowledgement without a 2PC

These were actually the questions that I was hoping to get an answer to in this particular chapter.

I'm fairly new to RabbitMQ and to building distributed applications using it, and the questions I posted above are the ones the I am struggling to find their answers, and so, being this the kind of book that a person would buy precisely to find thos, I was hoping you may want to give some consideration to possibility of addressing some of these topics either in this chapter or some other within the book.

Thanks in advance for your consideration

69626 (2) [Avatar] Offline