Your SlideShare is downloading. ×
When Ruby Meets Java - The Power of Torquebox
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

When Ruby Meets Java - The Power of Torquebox


Published on

Slides from @arunagw and 's talk from Ruby Conf India 2012.

Slides from @arunagw and 's talk from Ruby Conf India 2012.

Published in: Technology, Education

  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. When Ruby Meets Java T h e Powe r o f To r q u e b o xMonday 26 March 12
  • 2. About Us A r u n A g r aw a l - 2 8 0 + c o m m i t s i n R a i l s c o re - M o n g o i d c o re t e a m m e m b e r - C re a t o r o f o m n i a u t h - t w i t t e r - C o d i n g o n R a i l s s i n c e 2 0 0 7 - a g r aw a l a r u n . c o m / @ a r u n a g w R o c k y J a i s w a l - C o d i n g s i n c e 1 9 9 5 - K n o w b i t s o f J av a & R u b y - E n j oy u s i n g J R u b y - ro c k y j . i n / @ w h a t s u p ro c k yMonday 26 March 12
  • 3. ToDo - T h e E n t e r p r i s e - W h a t i s To r q u e b o x - D e m o - S c h e d u l i n g - S e r v i c e s - M e s s a g i n g - B a c k g ro u n d a b l e - C l u s t e r i n g & C a c h i n g - Pe r f o r m a n c e & S u m m a r y - S u r p r i s e ! !Monday 26 March 12
  • 4. Pop Quiz Coolest Thing About JRuby(1.6) ?Monday 26 March 12
  • 5. The EnterpriseMonday 26 March 12
  • 6. What If... Wouldn’t it be great if - I could use the power of Java libraries with the ease of Ruby - I could use the power of a proven Java Server without writing any XML - I could deploy my JRuby app and test it without rebuilding it and restarting the serverMonday 26 March 12
  • 7. TORQUEBOX Built upon JBoss 7 Built using JRuby (1.6.7) Supports Rack, Rails, Sinatra Everything in one boxMonday 26 March 12
  • 8. TORQUEBOXMonday 26 March 12
  • 9. Installation - Download the distribution from OR - rvm jruby (1.6.7) jruby -J-Xmx1024m -S gem install torquebox-server --preMonday 26 March 12
  • 10. Our Sh***y AppMonday 26 March 12
  • 11. Scheduling Uses the battle-tested Quartz Java library Zero XML Minimal configuration No manual thread / process management No messing with cronMonday 26 March 12
  • 12. Scheduling config/torquebox.yml jobs: mail_notifier: job: MailNotifier cron: */5 * * * * ? description: Deliver reminder email class MailNotifier def run send_reminder_notification end def send_reminder_notification puts "Sending mail ..." #UserMailer.reminder_email(User.find(1)).deliver end endMonday 26 March 12
  • 13. Services Long running services with 3 line configuration Full access to the Rails environment JVM threads!Monday 26 March 12
  • 14. Services config/torquebox.yml services: MessageNotifier: config: name: hello class MessageNotifier def initialize(opts={}) @name = opts[name] end def start { run } end def stop @done = true end def run until @done do_something #todo sleep(5) end end endMonday 26 March 12
  • 15. Messaging JMS supported out-of-the-box (HornetQ) Advanced Messaging Queuing Protocol (AMQP) - RabbitMQ Supports STOMP out of the boxMonday 26 March 12
  • 16. AMQPMonday 26 March 12
  • 17. Messaging In a long running service - ... def do_something puts "Checking the queue for messages ..." bunny = => false) # start a communication session with the amqp server bunny.start # declare a queue q = bunny.queue(@name) # get message from the queue msg = q.pop[:payload] puts "This is the message: " + msg.to_s # close the connection bunny.stop endMonday 26 March 12
  • 18. Backgroundable As easy as A, B, C ... class User < ActiveRecord::Base include TorqueBox::Messaging::Backgroundable always_background :send_signup_notification validates_confirmation_of : ... def send_signup_notification(user) UserMailer.welcome_email(user).deliver end endMonday 26 March 12
  • 19. Clustering torquebox run --clustered Does everything Servers in a LAN are automatically clustered Top it up with mod_cluster from JBossMonday 26 March 12
  • 20. Caching TorqueBox provides an implementation of the Rails 3.x ActiveSupport::Cache::Store that exposes your application to the Infinispan data grid. Uses Infinispan by default Can utilize the cluster with minimal config Share the cache across the cluster - FTW!Monday 26 March 12
  • 21. PerformanceMonday 26 March 12
  • 22. PerformanceMonday 26 March 12
  • 23. Risks - Version 2 is quite stable but still at RC1 - Upgrading JRuby will not help sometimes - You will be on a cutting edge open-source technology but documentation is great, help is available online and on IRCMonday 26 March 12
  • 24. Surprise!!!Monday 26 March 12
  • 25. Questions?Monday 26 March 12
  • 26. Thank YouMonday 26 March 12