Giter Site home page Giter Site logo

merichar / stomp Goto Github PK

View Code? Open in Web Editor NEW

This project forked from stompgem/stomp

0.0 1.0 0.0 864 KB

A ruby gem for sending and receiving messages from a Stomp protocol compliant message queue. Includes: failover logic, ssl support.

Home Page: http://stomp.github.com

License: Apache License 2.0

Ruby 98.95% Shell 1.05%

stomp's Introduction

README

Overview

An implementation of the Stomp protocol for Ruby. See:

Hash Login Example Usage (this is the recommended login technique):

    hash = {
        :hosts => [
        # First connect is to remotehost1
        {:login => "login1", :passcode => "passcode1", :host => "remotehost1", :port => 61612, :ssl => true},
        # First failover connect is to remotehost2
        {:login => "login2", :passcode => "passcode2", :host => "remotehost2", :port => 61613, :ssl => false},
        ],
        # These are the default parameters and do not need to be set
        :reliable => true,                  # reliable (use failover)
        :initial_reconnect_delay => 0.01,   # initial delay before reconnect (secs)
        :max_reconnect_delay => 30.0,       # max delay before reconnect
        :use_exponential_back_off => true,  # increase delay between reconnect attpempts
        :back_off_multiplier => 2,          # next delay multiplier
        :max_reconnect_attempts => 0,       # retry forever, use # for maximum attempts
        :randomize => false,                # do not radomize hosts hash before reconnect
        :connect_timeout => 0,              # Timeout for TCP/TLS connects, use # for max seconds
        :connect_headers => {},             # user supplied CONNECT headers (req'd for Stomp 1.1+)
        :parse_timeout => 5,                # IO::select wait time on socket reads
        :logger => nil,                     # user suplied callback logger instance
        :dmh => false,                      # do not support multihomed IPV4 / IPV6 hosts during failover
        :closed_check => true,              # check first if closed in each protocol method
        :hbser => false,                    # raise on heartbeat send exception
        :stompconn => false,                # Use STOMP instead of CONNECT
        :usecrlf => false,                  # Use CRLF command and header line ends (1.2+)
        :max_hbread_fails => 0,             # Max HB read fails before retry.  0 => never retry
        :max_hbrlck_fails => 0,             # Max HB read lock obtain fails before retry.  0 => never retry
        :fast_hbs_adjust => 0.0,            # Fast heartbeat senders sleep adjustment, seconds, needed ...
                                            # For fast heartbeat senders.  'fast' == YMMV.  If not
                                            # correct for your environment, expect unnecessary fail overs
        :connread_timeout => 0,             # Timeout during CONNECT for read of CONNECTED/ERROR, secs
        :tcp_nodelay => true,               # Turns on the TCP_NODELAY socket option; disables Nagle's algorithm
        :start_timeout => 0,                # Timeout around Stomp::Client initialization
        :sslctx_newparm => nil,             # Param for SSLContext.new
        :ssl_post_conn_check => true,       # Further verify broker identity
      }

      # for a client
      client = Stomp::Client.new(hash)

      # for a connection
      connection = Stomp::Connection.new(hash)

Positional Parameter Usage:

    client = Stomp::Client.new("user", "pass", "localhost", 61613)
    client.publish("/queue/mine", "hello world!")
    client.subscribe("/queue/mine") do |msg|
        p msg
    end

Stomp URL Usage:

A Stomp URL must begin with 'stomp://' and can be in one of the following forms:

    stomp://host:port
    stomp://host.domain.tld:port
    stomp://login:passcode@host:port
    stomp://login:[email protected]:port
    
    # e.g. c = Stomp::Client.new(urlstring)

Failover + SSL Example URL Usage:

    options = "initialReconnectDelay=5000&randomize=false&useExponentialBackOff=false"
    # remotehost1 uses SSL, remotehost2 doesn't
    client = Stomp::Client.new("failover:(stomp+ssl://login1:passcode1@remotehost1:61612,stomp://login2:passcode2@remotehost2:61613)?#{options}")
    client.publish("/queue/mine", "hello world!")
    client.subscribe("/queue/mine") do |msg|
        p msg
    end

New:

See CHANGELOG.rdoc for details.

  • Gem version 1.4.4. Miscellaneous fixes, see CHANGELOG.rdoc for details.
  • Gem version 1.4.3. Fix broken install. Do not try to install 1.4.2.
  • Gem version 1.4.2. Fix memory leak, and others !: see CHANGELOG.md for details.
  • Gem version 1.4.1. Important SSL changes !: see CHANGELOG.md for details.
  • Gem version 1.4.0. Note: Change sementics of :parse_timeout, see CHANGELOG.md for details.
  • Gem version 1.3.5. Miscellaneous fixes, see CHANGELOG.rdoc for details.
  • Gem version 1.3.4. Miscellaneous fixes, see CHANGELOG.rdoc for details.
  • Gem version 1.3.3. Miscellaneous fixes, see CHANGELOG.rdoc for details.
  • Gem version 1.3.2. Miscellaneous fixes, see changelog for details.
  • Gem version 1.3.1. Bugfix for logging.
  • Gem version 1.3.0. Added ERROR frame raising as exception, added anonymous connections, miscellaneous other fixes.

For changes in older versions see CHANGELOG.rdoc for details.

Historical Information:

Up until March 2009 the project was maintained and primarily developed by Brian McCallister.

Source Code and Project URLs:

Source Code and Project

Stomp Protocol Information:

Protocol Information

Contributors (by first author date)

Contribution information:

First Author Date (Commit Count) Name / E-mail
2005-08-26 (0023) brianm / brianm@fd4e7336-3dff-0310-b68a-b6615a75f13b
2006-03-16 (0005) jstrachan / jstrachan@fd4e7336-3dff-0310-b68a-b6615a75f13b
2006-04-19 (0001) chirino / chirino@fd4e7336-3dff-0310-b68a-b6615a75f13b
2007-05-09 (0003) kookster / kookster@fd4e7336-3dff-0310-b68a-b6615a75f13b
2008-05-08 (0016) Glenn Rempe / [email protected]
2009-02-03 (0001) Tony Garnock-Jones / [email protected]
2009-02-09 (0003) Marius Mathiesen / [email protected]
2009-02-13 (0004) Johan Sørensen / [email protected]
2009-11-17 (0022) Thiago Morello / [email protected]
2009-11-22 (0001) unknown / katy@.(none)
2009-12-18 (0052) Thiago Morello / [email protected]
2009-12-25 (0387) gmallard / [email protected]
2010-01-07 (0007) Rafael Rosa / [email protected]
2010-03-23 (0042) Guy M. Allard / [email protected]
2010-04-01 (0001) Dmytro Shteflyuk / [email protected]
2010-10-22 (0001) Neil Wilson / [email protected]
2011-02-09 (0001) Dinesh Majrekar / [email protected]
2011-04-15 (0002) Kiall Mac Innes / [email protected]
2011-04-29 (0002) Rob Skaggs / [email protected]
2011-08-23 (0003) Tom May / [email protected]
2011-08-24 (0002) Thiago Morello / [email protected]
2011-09-11 (0003) Lucas Hills / [email protected]
2011-11-20 (0002) Chris Needham / [email protected]
2011-12-11 (0003) R.I.Pienaar / [email protected]
2011-12-13 (0001) tworker / [email protected]
2012-03-16 (0001) James Pearson / [email protected]
2012-05-10 (0001) Tommy Bishop / [email protected]
2012-06-18 (0002) Jeremy Gailor / [email protected]
2013-02-20 (0002) JP Hastings-Spital / [email protected]
2013-03-14 (0003) glennr / [email protected]
2013-07-29 (0021) Ian Smith / [email protected]
2013-08-07 (0001) Hiram Chirino / [email protected]
2013-08-15 (0005) Ian Smith / [email protected]
2013-08-22 (0007) Ian Smith / [email protected]
2013-09-26 (0001) Orazio Cotroneo / [email protected]
2013-10-22 (0001) OrazioWE7 / [email protected]
2014-03-13 (0001) Richard Clamp / [email protected]
2014-12-08 (0001) m4rCsi / [email protected]
2015-09-05 (0001) Michael Klishin / [email protected]
2015-11-10 (0002) Patrick Sharp / [email protected]
2016-02-03 (0001) Wayne Robinson / [email protected]
2016-07-12 (0006) Nikolay Khasanov / [email protected]
2016-07-16 (0006) GitHub / [email protected]
2016-06-02 (0001) Ryan Rosenblum / [email protected]
2016-08-17 (0002) Alexandre Moutot / [email protected]
2016-10-25 (0001) Raducu Deaconu / [email protected]
2017-03-23 (0001) Steve Traylen / [email protected]
2017-06-01 (0001) Michael Smith / [email protected]

stomp's People

Contributors

gmallard avatar grempe avatar ismith avatar js avatar 2potatocakes avatar shortcut-kinder avatar ripienaar avatar tommay avatar glennr avatar oraziocw avatar morellon avatar psharpnumerex avatar kiall avatar jphastings avatar chrisn avatar waynerobinson avatar tonyg avatar thbishop avatar traylenator avatar rrosenblum avatar richardc avatar reidmv avatar raducu-deaconu-visma avatar neilw avatar michaelklishin avatar merichar avatar chirino avatar kpumuk avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.