Skip to content
/ stomp Public
forked from zmalltalker/stomp

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

License

Notifications You must be signed in to change notification settings

stompgem/stomp

This branch is 702 commits ahead of, 3 commits behind zmalltalker/stomp:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

4909b07 · Aug 19, 2020
May 29, 2016
Jul 29, 2012
Apr 11, 2020
Aug 19, 2020
Aug 9, 2013
Dec 13, 2019
Mar 30, 2019
Aug 29, 2016
Aug 19, 2020
Aug 19, 2020
Jan 30, 2006
Apr 11, 2020
Dec 10, 2018
Aug 19, 2020

Repository files navigation

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: 61_612, ssl: true },
    # First failover connect is to remotehost2
    { login: 'login2', passcode: 'passcode2', host: 'remotehost2', port: 61_613, 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
  nto_cmd_read: true,              # No timeout on COMMAND read
}

# 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.9. Fix two issues, enhance debugging and examples.
  • Gem version 1.4.8. Fix missed merge in 1.4.7 release.
  • Gem version 1.4.7. Add support for text SSL certs. Do not use, use 1.4.8 instead.
  • Gem version 1.4.6. Fix version 1.4.5 which breaks JRuby support.
  • Gem version 1.4.5. JRuby broken here. Use is not recommended.
  • Gem version 1.4.4. Miscellaneous fixes, see CHANGELOG.md 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.md for details.

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

See CONTRIBUTORS.md.

About

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

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Ruby 99.0%
  • Shell 1.0%