RabbitMQ is an implementation of AMQP, the emerging standard for high performance enterprise messaging
ขั้นตอนการติดตั้ง
1. download RabbitMQ Windows Bundle ที่ http://www.rabbitmq.com/download.html โดยใน zip file จะประกอบไปด้วย
- Erlang :: otp_win32_xxxx.exe
- RabbitMq Server :: rabbitmq-server-windows-xxxx.zip
- RabbitMq Client for Java :: rabbitmq-java-client-bin-xxxx.zip
2. ทำการติดตั้ง Erlang
3. extract rabbitmq-server-windows-xxxx.zip จะมี folder -> ebin, sbin, src, include
4. กำหนด env ตาม Link สรุปง่ายๆ เป็นดังนี้
- กำหนด ERLANG_HOME คือ folder ที่ทำการติดตั้ง erlang
- กำหนด RABBITMQ_BASE คือ folder ที่จะใช้เก็บข้อมูลต่างๆ ของ mq เช่น user account, message
5. ทดสอบ run rabbitmq server
- ไปที่ folder sbin ทำการ run
>>rabbitmq-server.bat
จะแสดงผลดังนี้ เป็นอันเสร็จสิ้น
...
starting database ...done
starting core processes ...done
starting recovery ...done
starting persister ...done
starting builtin applications ...done
starting TCP listeners ...done
ิbroke running
มาดูการจัดการหลังการติดตั้ง สามารถเข้าไปดูได้ที่ี่ http://www.rabbitmq.com/admin-guide.html โดยหลักจะทำการ
- Manage Server : stop, start
- Manage User Account
- Manage VirtualHost
- Manage Realm
- Grant permmision to user
ค่า default ของ rabbitmq เป็นดังนี้
username = guest
password = guest
virtualhost = /
realm = /data
host = localhost/ip/127.0.0.1
ผมใช้ client เป็น java ตามสิ่งที่ load มาตั้งแต่แรก ซึ่ง API ที่ให้มาก้ใช้งานไม่ยาก สามารถอ่านจากเอกสารได้ที่ http://www.rabbitmq.com/api-guide.html
ตัวอย่าง code การติดต่อ จะประกอบไปด้วย
1. Create Channel
ConnectionParameters params = new ConnectionParameters();
params.setUsername("guest");
params.setPassword("guest");
params.setVirtualHost("/");
params.setRequestedHeartbeat(0);
ConnectionFactory factory = new ConnectionFactory(params);
Connection conn = factory.newConnection("localhost", 5672);
Channel channel = conn.createChannel();
int ticket = channel.accessRequest("/data");
channel.exchangeDeclare(ticket, "exchangeName", "direct", true);
channel.queueDeclare(ticket, "queueName");
channel.queueBind(ticket, "queueName", "exchangeName","routingKey");
2. Publish Message to broker [ RabbitMQ ]
byte[] messageBodyBytes = "Hello, world!".getBytes();
channel.basicPublish(ticket, "exchangeName", "routingKey", null, messageBodyBytes);
3. Retrieve Message from broker [ RabbitMQ ]
GetResponse response = channel.basicGet(ticket, "queueName", noAck);
if (response == null) {
// No message retrieved.
} else {
AMQP.BasicProperties props = response.getProps();
byte[] body = response.getBody();
long deliveryTag = response.getEnvelope().getDeliveryTag();
channel.basicAck(deliveryTag, false);
System.out.println(new String(body));
}
4. Close channel
channel.close(AMQP.REPLY_SUCCESS, "Goodbye");
conn.close(AMQP.REPLY_SUCCESS);
เท่านี้ก็สามารถเริ่มใช้งาน RabbitMQ ในเบื้องต้นได้แล้วครับ