SlideShare a Scribd company logo
1 of 68
Download to read offline
TorqueBox
    Ruby na sterydach
Marek.
+

=
TorqueBox to klej
pomiędzy JRuby a
serwerem aplikacji
   JBoss AS.
JRuby.
Prawdziwe wątki.
Bardzo szybkie
 środowisko.
Biblioteki Javy.
JBoss AS.
Serwer aplikacji Java EE
  (klastrowanie, web,
wiadomości, cache, etc)
Cel.
Pierwszorzędny



Rails / Sinatra / Rack
Drugorzędny

   Usługi / Zadania /
Wiadomości / Transakcje /
Cache / WebSockets / HA
Web.
Sinatra
myapp/
  config.ru
  myapp.rb
  torquebox.yml
myapp/
  config/
    torquebox.yml
                     Rails
    application.rb
    ...
  app/
    views/
    controllers/
    models/
    ...
Poka poka.
Nuda.
Usługi.
Gdy wykonujemy
                  coś w tle przez
start()
                  jakiś czas, np.
...czas mija...   pobieranie danych z
                  Twittera
stop()
class MyService
  def initialize(opts)
  end

  def start
  end

  def stop
  end
end
                  app/services/my_service.rb
services:
  MyService:
    config:
      foo: bar
      abc: 1

  MySingletonService:
    singleton: true
                  config/torquebox.yml
singleton: true

 Jedna aktywna usługa w
jednym czasie w klastrze.
singleton: false
 Usługi aktywne na
wszystkich węzłach
klastra (domyślnie).
Zadania.
Gdy wykonujemy
                            coś co jakiś czas.
Co piątek
W pierwszy dzień miesiąca
Co 2 minuty

No, wiesz o co chodzi.
class MyJob
  def run
  end
end



              app/jobs/my_job.rb
jobs:
  newsletter:
    job: MyJob
    cron: ‘0 0 0 1 * ?’
    singleton: true

  cache_cleaner:
    job: CacheCleanerJob
    cron: ‘5 * * * * ?’
                  config/torquebox.yml
Wiadomości.
JMS.
queues:
  /queues/foo:
  /queues/bar:

topics:
  /topics/foo:
  /topics/bar:

                 config/torquebox.yml
Wysyłamy...

class MyController < ApplicationController
include TorqueBox::Injectors

  def index
    queue = inject(‘/queues/foo’)
    queue.publish(“Lecimy!”)
  end

end
                      app/controllers/
                      my_controller.rb
...i odbieramy

include TorqueBox::Messaging

class MyProcessor < MessageProcessor
  def initialize(opts)
  end

  def on_message(body)
    # body == “Lecimy!”
  end
end
                      app/processors/
                      my_processor.rb
messaging:
  /queues/foo:
    MyProcessor:
      filter: "language = 'ruby'"
      concurrency: 3
      config:
        foo: bar


                    config/torquebox.yml
Transakcje.
Kolejka




        Temat

Kod

        Cache




      Baza danych
Dystrybuowane.
        (trudne słowo)


Sukces tylko wtedy gdy
wszystko się powiedzie.
Transakcje w AR?


TorqueBox.transaction do
  User.create(:username => 'Kotori')
  TorqueBox.transaction do
    User.create(:username => 'Nemu')
    raise ActiveRecord::Rollback
  end
end
Transakcje gdziekolwiek?



TorqueBox.transaction do
  inject('/queues/foo').publish("blah")
end
Cache.
Infinispan.

Data Grid. Replikowalna,
dystrybuowalna pamięć.
Zamiast memcached.
cache = TorqueBoxStore.new(
      :name => ‘foo’,
      :mode => :replicated
)

cache.put(...)
cache.get(...)
Wstrzykiwanie zasobów.
Usługi
Kolejki / tematy
Java CDI
inject(‘/queues/foo’).publish(...)
inject(‘/topics/bar’).publish(...)
CDI
package com.acme.blah;

@ApplicationScoped
public class MyBean {
  public void fire() { ... }
}
bean = inject(com.acme.blah.MyBean)
bean.fire
Klastrowanie.
JBoss AS ma wbudowane
wspacie dla klastrowania.
mod_cluster
Jeszcze nie
wspomniałem o...
Backgroudables.
WebSockets.
Kilka słów o wydajności.
http://torquebox.org/news/2011/10/06/torquebox-2x-performance/
http://torquebox.org/news/2011/10/06/torquebox-2x-performance/
http://torquebox.org/
http://github.com/torquebox


IRC: #torquebox on FreeNode

@torquebox
Dzięki.

Nie zapomnij o
 naklejkach!

More Related Content

What's hot

Metaprogramowanie w JS
Metaprogramowanie w JSMetaprogramowanie w JS
Metaprogramowanie w JSDawid Rusnak
 
Noc informatyka
Noc informatykaNoc informatyka
Noc informatykaOnetIT
 
Sekrety magicznego ogrodu Docker
Sekrety magicznego ogrodu DockerSekrety magicznego ogrodu Docker
Sekrety magicznego ogrodu DockerKamil Grabowski
 
Jak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzieńJak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzieńPaweł Kondraciuk
 
Smx + Camel - Maciek Próchniak
Smx + Camel - Maciek PróchniakSmx + Camel - Maciek Próchniak
Smx + Camel - Maciek PróchniakMaciek Próchniak
 
Cykl życia zapytania HTTP (pod maską)
Cykl życia zapytania HTTP (pod maską)Cykl życia zapytania HTTP (pod maską)
Cykl życia zapytania HTTP (pod maską)Laravel Poland MeetUp
 
PHP@Docker - w produkcji
PHP@Docker - w produkcjiPHP@Docker - w produkcji
PHP@Docker - w produkcjiMarcin Kurzyna
 
Czterej jeźdźcy apokalipsy gdy Armagedon w JVM nadchodzi
Czterej jeźdźcy apokalipsy  gdy Armagedon w JVM nadchodziCzterej jeźdźcy apokalipsy  gdy Armagedon w JVM nadchodzi
Czterej jeźdźcy apokalipsy gdy Armagedon w JVM nadchodziJaroslaw Palka
 

What's hot (11)

Metaprogramowanie w JS
Metaprogramowanie w JSMetaprogramowanie w JS
Metaprogramowanie w JS
 
Noc informatyka
Noc informatykaNoc informatyka
Noc informatyka
 
Sekrety magicznego ogrodu Docker
Sekrety magicznego ogrodu DockerSekrety magicznego ogrodu Docker
Sekrety magicznego ogrodu Docker
 
Jak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzieńJak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzień
 
Smx + Camel - Maciek Próchniak
Smx + Camel - Maciek PróchniakSmx + Camel - Maciek Próchniak
Smx + Camel - Maciek Próchniak
 
Cykl życia zapytania HTTP (pod maską)
Cykl życia zapytania HTTP (pod maską)Cykl życia zapytania HTTP (pod maską)
Cykl życia zapytania HTTP (pod maską)
 
GlusterFS
GlusterFSGlusterFS
GlusterFS
 
PHP-PM. Hit czy kit?
PHP-PM. Hit czy kit?PHP-PM. Hit czy kit?
PHP-PM. Hit czy kit?
 
PHP@Docker - w produkcji
PHP@Docker - w produkcjiPHP@Docker - w produkcji
PHP@Docker - w produkcji
 
Infrastructure As Code
Infrastructure As CodeInfrastructure As Code
Infrastructure As Code
 
Czterej jeźdźcy apokalipsy gdy Armagedon w JVM nadchodzi
Czterej jeźdźcy apokalipsy  gdy Armagedon w JVM nadchodziCzterej jeźdźcy apokalipsy  gdy Armagedon w JVM nadchodzi
Czterej jeźdźcy apokalipsy gdy Armagedon w JVM nadchodzi
 

Viewers also liked

BoxGrinder – FUDCon 2011 Tempe
BoxGrinder – FUDCon 2011 TempeBoxGrinder – FUDCon 2011 Tempe
BoxGrinder – FUDCon 2011 Tempemarekgoldmann
 
Java Night 2010 SteamCannon
Java Night 2010 SteamCannonJava Night 2010 SteamCannon
Java Night 2010 SteamCannonmarekgoldmann
 
JUDCon 2010 Boston : TorqueBox
JUDCon 2010 Boston : TorqueBoxJUDCon 2010 Boston : TorqueBox
JUDCon 2010 Boston : TorqueBoxmarekgoldmann
 
JUDCon 2010 Boston : BoxGrinder
JUDCon 2010 Boston : BoxGrinderJUDCon 2010 Boston : BoxGrinder
JUDCon 2010 Boston : BoxGrindermarekgoldmann
 
Silesia JUG : Java Message Service
Silesia JUG : Java Message ServiceSilesia JUG : Java Message Service
Silesia JUG : Java Message Servicemarekgoldmann
 
BoxGrinder – FOSDEM 2012
BoxGrinder – FOSDEM 2012BoxGrinder – FOSDEM 2012
BoxGrinder – FOSDEM 2012marekgoldmann
 
13 14 SAP policy - revised for spring 2014 - final - 111413
13 14 SAP policy - revised for spring 2014 - final  - 11141313 14 SAP policy - revised for spring 2014 - final  - 111413
13 14 SAP policy - revised for spring 2014 - final - 111413Houston Community College
 
Tutorial caesars II
Tutorial caesars IITutorial caesars II
Tutorial caesars IImanuedlf
 

Viewers also liked (8)

BoxGrinder – FUDCon 2011 Tempe
BoxGrinder – FUDCon 2011 TempeBoxGrinder – FUDCon 2011 Tempe
BoxGrinder – FUDCon 2011 Tempe
 
Java Night 2010 SteamCannon
Java Night 2010 SteamCannonJava Night 2010 SteamCannon
Java Night 2010 SteamCannon
 
JUDCon 2010 Boston : TorqueBox
JUDCon 2010 Boston : TorqueBoxJUDCon 2010 Boston : TorqueBox
JUDCon 2010 Boston : TorqueBox
 
JUDCon 2010 Boston : BoxGrinder
JUDCon 2010 Boston : BoxGrinderJUDCon 2010 Boston : BoxGrinder
JUDCon 2010 Boston : BoxGrinder
 
Silesia JUG : Java Message Service
Silesia JUG : Java Message ServiceSilesia JUG : Java Message Service
Silesia JUG : Java Message Service
 
BoxGrinder – FOSDEM 2012
BoxGrinder – FOSDEM 2012BoxGrinder – FOSDEM 2012
BoxGrinder – FOSDEM 2012
 
13 14 SAP policy - revised for spring 2014 - final - 111413
13 14 SAP policy - revised for spring 2014 - final  - 11141313 14 SAP policy - revised for spring 2014 - final  - 111413
13 14 SAP policy - revised for spring 2014 - final - 111413
 
Tutorial caesars II
Tutorial caesars IITutorial caesars II
Tutorial caesars II
 

Similar to TorqueBox - Ruby na sterydach

Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...Polcode
 
4Developers 2015: Czterej jeźdźcy apokalipsy, gdy Armagedon w JVM nadchodzi. ...
4Developers 2015: Czterej jeźdźcy apokalipsy, gdy Armagedon w JVM nadchodzi. ...4Developers 2015: Czterej jeźdźcy apokalipsy, gdy Armagedon w JVM nadchodzi. ...
4Developers 2015: Czterej jeźdźcy apokalipsy, gdy Armagedon w JVM nadchodzi. ...PROIDEA
 
Microservieces and their communication (RabbitMQ/SIDEKIQ)
Microservieces and their communication (RabbitMQ/SIDEKIQ)Microservieces and their communication (RabbitMQ/SIDEKIQ)
Microservieces and their communication (RabbitMQ/SIDEKIQ)infakt
 
infoShare 2011 - Jacek Laskowski - Programowanie Funkcjonalne Funkcyjnie z Cl...
infoShare 2011 - Jacek Laskowski - Programowanie Funkcjonalne Funkcyjnie z Cl...infoShare 2011 - Jacek Laskowski - Programowanie Funkcjonalne Funkcyjnie z Cl...
infoShare 2011 - Jacek Laskowski - Programowanie Funkcjonalne Funkcyjnie z Cl...Infoshare
 
Modularny JavaScript - meet.js
Modularny JavaScript - meet.jsModularny JavaScript - meet.js
Modularny JavaScript - meet.jsPatryk Jar
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Cloudskraqa
 
Professional Javascript for Developers
Professional  Javascript for DevelopersProfessional  Javascript for Developers
Professional Javascript for DevelopersRule_Financial
 
Erlang
ErlangErlang
Erlangkonryd
 
Monitoring systemu. Dlaczego mój kardiolog jest bogatym człowiekiem?
Monitoring systemu. Dlaczego mój kardiolog jest bogatym człowiekiem?Monitoring systemu. Dlaczego mój kardiolog jest bogatym człowiekiem?
Monitoring systemu. Dlaczego mój kardiolog jest bogatym człowiekiem?The Software House
 
Camel-Drools - Javarsovia 2010
Camel-Drools - Javarsovia 2010Camel-Drools - Javarsovia 2010
Camel-Drools - Javarsovia 2010Maciek Próchniak
 
Thymeleaf - szablony, które bez przetworzenia zrozumie twoja przeglądarka
Thymeleaf - szablony, które bez przetworzenia zrozumie twoja przeglądarkaThymeleaf - szablony, które bez przetworzenia zrozumie twoja przeglądarka
Thymeleaf - szablony, które bez przetworzenia zrozumie twoja przeglądarkaMaciej Ziarko
 
Ganymede - nowoczesne technologie w grach przeglądarkowych i mobilnych
Ganymede - nowoczesne technologie w grach przeglądarkowych i mobilnychGanymede - nowoczesne technologie w grach przeglądarkowych i mobilnych
Ganymede - nowoczesne technologie w grach przeglądarkowych i mobilnychSKN Shader
 
Lexical scope, function vs. block scope, hoisting, scope closures
Lexical scope, function vs. block scope, hoisting, scope closuresLexical scope, function vs. block scope, hoisting, scope closures
Lexical scope, function vs. block scope, hoisting, scope closuresBrainhub
 
Warsztaty: Podstawy PHP - część 2 - omówienie składni języka PHP (wersja 7)
Warsztaty: Podstawy PHP - część 2 - omówienie składni języka PHP (wersja 7)Warsztaty: Podstawy PHP - część 2 - omówienie składni języka PHP (wersja 7)
Warsztaty: Podstawy PHP - część 2 - omówienie składni języka PHP (wersja 7)Codesushi.co (CODESUSHI LLC)
 
Confitura 2018 - Sekretne życie jobów Sparkowych
Confitura 2018 - Sekretne życie jobów SparkowychConfitura 2018 - Sekretne życie jobów Sparkowych
Confitura 2018 - Sekretne życie jobów SparkowychMarcin Jasiński
 
Service workers - bądź online, nawet kiedy jesteś offline!
Service workers - bądź online, nawet kiedy jesteś offline!Service workers - bądź online, nawet kiedy jesteś offline!
Service workers - bądź online, nawet kiedy jesteś offline!The Software House
 
Testowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackTestowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackThe Software House
 

Similar to TorqueBox - Ruby na sterydach (20)

Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...
 
4Developers 2015: Czterej jeźdźcy apokalipsy, gdy Armagedon w JVM nadchodzi. ...
4Developers 2015: Czterej jeźdźcy apokalipsy, gdy Armagedon w JVM nadchodzi. ...4Developers 2015: Czterej jeźdźcy apokalipsy, gdy Armagedon w JVM nadchodzi. ...
4Developers 2015: Czterej jeźdźcy apokalipsy, gdy Armagedon w JVM nadchodzi. ...
 
Microservieces and their communication (RabbitMQ/SIDEKIQ)
Microservieces and their communication (RabbitMQ/SIDEKIQ)Microservieces and their communication (RabbitMQ/SIDEKIQ)
Microservieces and their communication (RabbitMQ/SIDEKIQ)
 
infoShare 2011 - Jacek Laskowski - Programowanie Funkcjonalne Funkcyjnie z Cl...
infoShare 2011 - Jacek Laskowski - Programowanie Funkcjonalne Funkcyjnie z Cl...infoShare 2011 - Jacek Laskowski - Programowanie Funkcjonalne Funkcyjnie z Cl...
infoShare 2011 - Jacek Laskowski - Programowanie Funkcjonalne Funkcyjnie z Cl...
 
Modularny JavaScript - meet.js
Modularny JavaScript - meet.jsModularny JavaScript - meet.js
Modularny JavaScript - meet.js
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Clouds
 
Professional Javascript for Developers
Professional  Javascript for DevelopersProfessional  Javascript for Developers
Professional Javascript for Developers
 
Erlang
ErlangErlang
Erlang
 
Monitoring systemu. Dlaczego mój kardiolog jest bogatym człowiekiem?
Monitoring systemu. Dlaczego mój kardiolog jest bogatym człowiekiem?Monitoring systemu. Dlaczego mój kardiolog jest bogatym człowiekiem?
Monitoring systemu. Dlaczego mój kardiolog jest bogatym człowiekiem?
 
Camel-Drools - Javarsovia 2010
Camel-Drools - Javarsovia 2010Camel-Drools - Javarsovia 2010
Camel-Drools - Javarsovia 2010
 
Scala
ScalaScala
Scala
 
Thymeleaf - szablony, które bez przetworzenia zrozumie twoja przeglądarka
Thymeleaf - szablony, które bez przetworzenia zrozumie twoja przeglądarkaThymeleaf - szablony, które bez przetworzenia zrozumie twoja przeglądarka
Thymeleaf - szablony, które bez przetworzenia zrozumie twoja przeglądarka
 
Ganymede - nowoczesne technologie w grach przeglądarkowych i mobilnych
Ganymede - nowoczesne technologie w grach przeglądarkowych i mobilnychGanymede - nowoczesne technologie w grach przeglądarkowych i mobilnych
Ganymede - nowoczesne technologie w grach przeglądarkowych i mobilnych
 
Lexical scope, function vs. block scope, hoisting, scope closures
Lexical scope, function vs. block scope, hoisting, scope closuresLexical scope, function vs. block scope, hoisting, scope closures
Lexical scope, function vs. block scope, hoisting, scope closures
 
Warsztaty: Podstawy PHP - część 2 - omówienie składni języka PHP (wersja 7)
Warsztaty: Podstawy PHP - część 2 - omówienie składni języka PHP (wersja 7)Warsztaty: Podstawy PHP - część 2 - omówienie składni języka PHP (wersja 7)
Warsztaty: Podstawy PHP - część 2 - omówienie składni języka PHP (wersja 7)
 
Confitura 2018 - Sekretne życie jobów Sparkowych
Confitura 2018 - Sekretne życie jobów SparkowychConfitura 2018 - Sekretne życie jobów Sparkowych
Confitura 2018 - Sekretne życie jobów Sparkowych
 
Php5
Php5Php5
Php5
 
Service workers - bądź online, nawet kiedy jesteś offline!
Service workers - bądź online, nawet kiedy jesteś offline!Service workers - bądź online, nawet kiedy jesteś offline!
Service workers - bądź online, nawet kiedy jesteś offline!
 
Python io
Python ioPython io
Python io
 
Testowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackTestowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStack
 

TorqueBox - Ruby na sterydach