In the example below we use the following
RabbitMQ 3.0 - http://www.rabbitmq.com/
JSON-Simple - http://code.google.com/p/json-simple/
1. Create a start up script to start a single RabbitMQ server.
export RABBITMQ_NODE_PORT=5676
export RABBITMQ_NODENAME=rabbit_standalone
export RABBIT_HOME=/Users/papicella/vmware/software/rabittMQ/rabbitmq_server-3.0.0
$RABBIT_HOME/sbin/rabbitmq-server -detached
netstat -an | grep 5676
2. Start as shown below.
[Mon Feb 11 21:07:17 papicella@:~/rabbitMQ/standalone-rabbit ] $ sudo ./node1.sh
Warning: PID file not written; -detached was passed.
tcp4 0 0 *.5676 *.* LISTEN
tcp46 0 0 *.5676 *.* LISTEN
3. Create a RECEIVE client which will create a QUEUE and wait for messages. IT is expecting a JSON string to be sent.
JSONRecv.java
package pas.au.rabbitmq30.tutorial.helloworld.json;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.QueueingConsumer;
public class JSONRecv
{
private final static String QUEUE_NAME = "json-example";
private ConnectionFactory factory = null;
private JSONParser parser;
public JSONRecv()
{
parser = new JSONParser();
}
public void run () throws Exception
{
factory = new ConnectionFactory();
factory.setHost("localhost");
factory.setPort(5676);
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
System.out.println(" [*] Waiting for messages. To exit press CTRL+C");
QueueingConsumer consumer = new QueueingConsumer(channel);
channel.basicConsume(QUEUE_NAME, true, consumer);
while (true)
{
QueueingConsumer.Delivery delivery = consumer.nextDelivery();
String message = new String(delivery.getBody());
JSONObject obj = (JSONObject) parser.parse(message);
System.out.println(" [x] Received '" + obj.toJSONString() + "'");
}
}
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception
{
// TODO Auto-generated method stub
JSONRecv test = new JSONRecv();
test.run();
}
}
4. Create a SEND client and place 10 JSON objects onto the QUEUE
JSONSend.java
package pas.au.rabbitmq30.tutorial.helloworld.json;
import org.json.simple.JSONObject;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
public class JSONSend
{
private final static String QUEUE_NAME = "json-example";
private ConnectionFactory factory = null;
public JSONSend()
{
// TODO Auto-generated constructor stub
}
@SuppressWarnings("unchecked")
public void run() throws Exception
{
factory = new ConnectionFactory();
factory.setHost("localhost");
factory.setPort(5676);
System.out.println("connected to rabbitMQ on localhost ...");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
for (int i = 1; i <= 10; i++)
{
JSONObject obj = new JSONObject();
obj.put("name", String.format("Person%s", i));
obj.put("age", new Integer(37));
channel.basicPublish("", QUEUE_NAME, null, obj.toJSONString().getBytes());
System.out.println(" [x] Sent '" + obj.toJSONString() + "'");
}
channel.close();
connection.close();
}
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception
{
// TODO Auto-generated method stub
JSONSend test = new JSONSend();
test.run();
}
}
5. Run JSONRecv.java and verify output as follows
[*] Waiting for messages. To exit press CTRL+C
6. Run JSONSend.java and then check the output from JSONRecv.java.
[*] Waiting for messages. To exit press CTRL+C
[x] Received '{"name":"Person1","age":37}'
[x] Received '{"name":"Person2","age":37}'
[x] Received '{"name":"Person3","age":37}'
[x] Received '{"name":"Person4","age":37}'
[x] Received '{"name":"Person5","age":37}'
[x] Received '{"name":"Person6","age":37}'
[x] Received '{"name":"Person7","age":37}'
[x] Received '{"name":"Person8","age":37}'
[x] Received '{"name":"Person9","age":37}'
[x] Received '{"name":"Person10","age":37}'
For more information on RabbitMQ view the link below.
http://www.rabbitmq.com/
No comments:
Post a Comment