When Ruby Meets Java - The Power of Torquebox
Upcoming SlideShare
Loading in...5

When Ruby Meets Java - The Power of Torquebox



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

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



Total Views
Views on SlideShare
Embed Views



23 Embeds 2,674

http://torquebox.org 1347
http://rockyj.in 669
http://localhost 494
http://www.jboss.org 65
http://lanyrd.com 30
http://planet.jboss.org 14 14
http://staging.torquebox.org 7
http://www.onlydoo.com 7
http://www.dazzlebrijj.com 5
http://www.ofelio.com 4
http://us-w1.rockmelt.com 4
http://www.brijj.com 3
http://emiliamb.pbworks.com 2
http://oyeqin.blogspot.com 1
http://digg.com 1
http://rockyjin.ipage.com 1
http://www.hanrss.com 1
http://lfvsfcp10100.dn.net 1
http://planet-stg.jboss.org 1
http://webcache-exp-test.googleusercontent.com 1
http://blog.rockyj.in 1
http://rockyj.in. 1


Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

When Ruby Meets Java - The Power of Torquebox When Ruby Meets Java - The Power of Torquebox Presentation Transcript

  • When Ruby Meets Java T h e Powe r o f To r q u e b o xMonday 26 March 12
  • 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
  • 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
  • Pop Quiz Coolest Thing About JRuby(1.6) ?Monday 26 March 12
  • The EnterpriseMonday 26 March 12
  • 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
  • TORQUEBOX Built upon JBoss 7 Built using JRuby (1.6.7) Supports Rack, Rails, Sinatra Everything in one boxMonday 26 March 12
  • TORQUEBOXMonday 26 March 12
  • Installation - Download the distribution from torquebox.org OR - rvm jruby (1.6.7) jruby -J-Xmx1024m -S gem install torquebox-server --preMonday 26 March 12
  • Our Sh***y AppMonday 26 March 12
  • Scheduling Uses the battle-tested Quartz Java library Zero XML Minimal configuration No manual thread / process management No messing with cronMonday 26 March 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
  • Services Long running services with 3 line configuration Full access to the Rails environment JVM threads!Monday 26 March 12
  • Services config/torquebox.yml services: MessageNotifier: config: name: hello class MessageNotifier def initialize(opts={}) @name = opts[name] end def start Thread.new { run } end def stop @done = true end def run until @done do_something #todo sleep(5) end end endMonday 26 March 12
  • Messaging JMS supported out-of-the-box (HornetQ) Advanced Messaging Queuing Protocol (AMQP) - RabbitMQ Supports STOMP out of the boxMonday 26 March 12
  • AMQPMonday 26 March 12
  • Messaging In a long running service - ... def do_something puts "Checking the queue for messages ..." bunny = Bunny.new(:logging => 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
  • 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
  • Clustering torquebox run --clustered Does everything Servers in a LAN are automatically clustered Top it up with mod_cluster from JBossMonday 26 March 12
  • 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
  • PerformanceMonday 26 March 12
  • PerformanceMonday 26 March 12
  • 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
  • Surprise!!!Monday 26 March 12
  • Questions?Monday 26 March 12
  • Thank YouMonday 26 March 12