Coder Social home page Coder Social logo

tavilarion / stomp Goto Github PK

View Code? Open in Web Editor NEW

This project forked from stompgem/stomp

0.0 1.0 0.0 844 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 99.80% Shell 0.20%

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.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 (0369) gmallard / [email protected]
2010-01-07 (0007) Rafael Rosa / [email protected]
2010-03-23 (0024) 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 (0004) GitHub / [email protected]
2016-06-02 (0001) Ryan Rosenblum / [email protected]
2016-08-17 (0002) Alexandre Moutot / [email protected]

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.