Thanks, now I see it's currently supported by bobtfish. If you use it in production, could you please share your impressions?
пятница, 5 июня 2015 г., 12:24:53 UTC+5 пользователь alpha6 написал: > > Hi, Dmitry > > What problem with AnyEvent::RabbitMQ do you have? Right now, I see that > this module is updated 21th of march and it doesn't looks like unsupported. > > Anyway, blocking library in non-blocking system is not a problem. But you > should understand that is a potential bottleneck in whole application. > Because if this library blocks - all your apllication will blocks. > > For example, if single request costs 1ms and you have 10rps - your > application will locks for 10ms. But, if one of requests is longer than 1s > - you will have the DOS. > > > Best regards, > Denis > > 2015-05-31 6:30 GMT+03:00 Bakanov Dmitriy <[email protected] > <javascript:>>: > >> Hello, community >> >> Currently I have 2 Mojolicious applications. I want first application >> notify second application about some messages it receives. I decided, that >> RabbitMQ will be the best way to implement it, because RabbitMQ tool is >> widespread, it has monitoring features, it's fast and allow flexibility. >> But, I have some troubles to use RabbitMQ from mojolicious. There are >> clients to RabbitMQ that allow non-blocking mode, but due to company's >> coding standards I don't want to use unsupported client like >> AnyEvent::RabbitMQ. Now I have the following Idea: >> 1. I found a client https://github.com/markwellis/net-amqp-rabbitmq that >> has some support and has commits in a recently few months >> 2. Unfortunately, it's blocking. >> 3. But I can call method 'get' to get messages from RabbitMQ if they >> exist, or it will return undef, if there no messages >> 4. I want to emit event 'receiving' in IOLoop and call Rabbit's 'get' >> method. >> 5. If there is a message I will emit 'received' event in IOLoop and then >> will be handle it in callback. >> 6. After this handling I will emit 'receiving' again. >> 7. If there are no messages in 'receiving' call, I will start IOLoop's >> timer to fire after 0.1 sec and emit 'receiving' in timer's callback >> 8. So, I will have the system, that works non-blocking, using blocking >> library (?) >> 9. But I will have some overhead when RabbitMQ is idle, and I will be >> check it every 0.1 sec. I think it's not a problem for me, because RabbitMQ >> always should have a load in production. I did measured, that idle >> Mojolicious in this 'receiving' mode don't consume much resources. Just a >> 1-2% of CPU. But again, I think it really never will be idle. >> >> QUESTION: Do you see some pitfalls in this schema I have described? Is >> it OK? >> QUESTION 2: Maybe some advices to use another configuration or >> instruments to achieve my goals? >> >> Thanks, >> Dmitry >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Mojolicious" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> To post to this group, send email to [email protected] >> <javascript:>. >> Visit this group at http://groups.google.com/group/mojolicious. >> For more options, visit https://groups.google.com/d/optout. >> > > > > -- > С уважением, Денис Федосеев > -- You received this message because you are subscribed to the Google Groups "Mojolicious" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/mojolicious. For more options, visit https://groups.google.com/d/optout.
