Upgrade to Pro — share decks privately, control downloads, hide ads and more …

When Ruby Meets Java - The Power of Torquebox

When Ruby Meets Java - The Power of Torquebox

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

Arun Agrawal

April 11, 2012
Tweet

More Decks by Arun Agrawal

Other Decks in Technology

Transcript

  1. When Ruby Meets Java T h e P o w

    e r o f T o r q u e b o x Monday 26 March 12
  2. About Us A r u n A g r a

    w a l - 2 8 0 + c o m m i t s i n R a i l s c o r e - M o n g o i d c o r e t e a m m e m b e r - C r e 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 a w 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 a v a & R u b y - E n j o y u s i n g J R u b y - r o c k y j . i n / @ w h a t s u p r o c k y Monday 26 March 12
  3. ToDo - T h e E n t e r

    p r i s e - W h a t i s T o 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 r o u n d a b l e - C l u s t e r i n g & C a c h i n g - P e 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. 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 server Monday 26 March 12
  5. TORQUEBOX Built upon JBoss 7 Built using JRuby (1.6.7) Supports

    Rack, Rails, Sinatra Everything in one box Monday 26 March 12
  6. Installation - Download the distribution from torquebox.org OR - rvm

    jruby (1.6.7) jruby -J-Xmx1024m -S gem install torquebox-server --pre Monday 26 March 12
  7. Scheduling Uses the battle-tested Quartz Java library Zero XML Minimal

    configuration No manual thread / process management No messing with cron Monday 26 March 12
  8. 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 end Monday 26 March 12
  9. Services Long running services with 3 line configuration Full access

    to the Rails environment JVM threads! Monday 26 March 12
  10. 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 end Monday 26 March 12
  11. Messaging JMS supported out-of-the-box (HornetQ) Advanced Messaging Queuing Protocol (AMQP)

    - RabbitMQ Supports STOMP out of the box Monday 26 March 12
  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 end Monday 26 March 12
  13. 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 end Monday 26 March 12
  14. Clustering torquebox run --clustered Does everything Servers in a LAN

    are automatically clustered Top it up with mod_cluster from JBoss Monday 26 March 12
  15. 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
  16. 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 IRC Monday 26 March 12