1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
# -*- encoding: utf-8 -*-
#
# The current require dance for different Ruby versions.
# Change this to suit your requirements.
#
if Kernel.respond_to?(:require_relative)
require_relative("./stomp_common")
else
$LOAD_PATH << File.dirname(__FILE__)
require "stomp_common"
end
include Stomp1xCommon
#
# == Stomp 1.x Putt / Get Example
#
# Purpose: to demonstrate producing and consuming messages using a
# Stomp#Connection instance.
#
# Note: this example assumes that you have at least the 1.2.0 gem release
# installed.
#
# When you:
#
# * Use a Stomp compliant broker
# * Want a Stomp 1.1+ connection and functionality
#
# then your code *must* specifically request that environment.
#
# You need to supply all of the normal values expected of course:
#
# * login - the user name
# * passcode - the password
# * host - the host to connect to
# * port - the port to connect to
#
# Additionaly you are required to supply the 1.1+ connection data as documented
# in the Stomp 1.1+ specifications:
#
# http://stomp.github.com/stomp-specification-1.0.html
# http://stomp.github.com/stomp-specification-1.1.html
# http://stomp.github.com/stomp-specification-1.2.html
#
# You are urged to become familiar with the specs. They are short documents.
#
# This includes:
#
# * The Stomp version(s) you wish the broker to consider
# * The broker vhost to connect to
#
# You may optionally specify other 1.1+ data:
#
# * heartbeat request
#
# Using the stomp gem, you should specify this data in the "connect_headers" Hash
# parameter. This example uses the common get_connection() method to
# get a connection.
#
class ConnectionPutExample
# Initialize
def initialize
end
# Run example
def run
#
# Get a connection
# ================
#
conn = get_connection()
#
# Let's just do some sanity checks, and look around.
#
raise "Connection failed!!" unless conn.open?()
#
# The broker _could_ have returned an ERROR frame (unlikely).
#
raise "Connect error: #{conn.connection_frame.body}" if conn.connection_frame.command == Stomp::CMD_ERROR
#
puts "Connection complete."
#
# Get Destination
#
qname = dest()
#
# Publish/put messages
#
puts "\nConnection start puts"
nm = nmsgs()
ph = {:persistent => true}
ph['suppress_content_length'] = 'yes' if suppresscl()
ph['K:A'] = 'V:A'
ph['K\B'] = 'V\B'
ph['K:C'] = 'V\C'
puts "Put Headers: #{ph}"
1.upto(nm) do |n|
data = "message payload: #{n} #{Time.now.to_f}"
conn.publish(qname, data, ph)
puts "Sent: #{data}"
end
#
# Finally disconnect
# ==================
#
conn.disconnect() # Business as usual
puts "\nConnection disconnect complete"
end
end
#
e = ConnectionPutExample.new()
e.run
|