Project

jessica

0.0
No commit activity in last 3 years
No release in over 3 years
A RabbitMQ client for JRubywith some AMQP gem api compatibility
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 0.0.0
~> 2.6.0

Runtime

~> 1.2.0
 Project Readme
RabbitMQ JRuby Client
=====================
rabbitmq-jruby-client allows you to use RabbitMQ Client from JRuby using the official Java RabbitMQ client from Rabbit Technologies
See more at http://www.rabbitmq.com

Getting Started
===============
1. Install and start RabbitMQ (see below)
2. Install JRuby RabbitMQ Client: jruby -S gem install rabbitmq-jruby-client

Example Usage
=============
gem 'rabbitmq-jruby-client'
require 'rabbitmq_client'

# Initializes the new client and connect to the server
client = RabbitMQClient.new

# Initializes a new queue
queue = client.queue('queue_name')

# Initializes a new exchange
exchange = client.exchange('exchange_name')

# Connects queue with the exchange
queue.bind(exchange)

# Publish a message to the queue
queue.publish('message body')

# Retrieve a message from the queue
message = queue.retrieve

# Subscribe to a queue with callback. (Event-driven)
queue.subscribe do |message|
  # do something with message
end

# Subscribe to a queue in a loop. (Polling)
queue.loop_subscribe do |message|
  # do something with message
end


Installing RabbitMQ on OS X
===========================
1. Install MacPorts
2. sudo port install rabbitmq-server

To run RabbitMQ
3. sudo rabbitmq-server

Marshalling
===========
By default standard ruby marshalling is used to serialise data but this can be overridden by using a marshalling class
which responds to two method calls:
1) load takes an array of java bytes and returns whatever you desrialise from this
2) dump takes a message and must produce an array of java bytes, a RabbitMQClientError is raised if the output is not 
a suitable array

The marshalling class can be set in several ways:
1. By instantiating a RabbitMQClient with a option of :marshaller set to the class you wish use as your default marshaller
2. By setting the 3rd argument of RabbitMQClient#queue to the class you wish to use for this queue
3. By instantiating a RabbitMQClient::QueueConsumer with a 3rd argument of the class you wish to use
4. By using RabbitMQClient#marshaller=
5. By using RabbitMQClient::Queue#marshaller=