When Ruby Meets Java - The Power of Torquebox

Preview:

DESCRIPTION

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

Citation preview

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

About UsA 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

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

Coolest Thing About JRuby(1.6) ?

Pop Quiz

Monday 26 March 12

The Enterprise

Monday 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 server

Monday 26 March 12

TORQUEBOX

Built upon JBoss 7Built using JRuby (1.6.7)Supports Rack, Rails, SinatraEverything in one box

Monday 26 March 12

TORQUEBOX

Monday 26 March 12

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

Our Sh***y App

Monday 26 March 12

SchedulingUses the battle-tested Quartz Java library

Zero XML

Minimal configuration

No manual thread / process management

No messing with cron

Monday 26 March 12

Schedulingconfig/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

ServicesLong running services with 3 line configuration

Full access to the Rails environment

JVM threads!

Monday 26 March 12

Servicesconfig/torquebox.ymlservices: 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 endend

Monday 26 March 12

MessagingJMS supported out-of-the-box (HornetQ)

Advanced Messaging Queuing Protocol (AMQP)- RabbitMQ

Supports STOMP out of the box

Monday 26 March 12

AMQP

Monday 26 March 12

MessagingIn 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.stopend

Monday 26 March 12

BackgroundableAs 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

Clusteringtorquebox run --clustered

Does everything

Servers in a LAN are automatically clustered

Top it up with mod_cluster from JBoss

Monday 26 March 12

CachingTorqueBox 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

Performance

Monday 26 March 12

Performance

Monday 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 IRC

Monday 26 March 12

Surprise!!!

Monday 26 March 12

Questions?

Monday 26 March 12

Thank You

Monday 26 March 12

Recommended