...
This particular version also includes a web management user interface accessible at http://localhost:15672/
Code Block |
---|
language | yml |
---|
title | docker-compose.yml |
---|
|
version: '3.0'
services:
rabbitmq:
image: rabbitmq:3-management
ports:
- '5672:5672'
- '15672:15672'
environment:
RABBITMQ_DEFAULT_USER: rabbit
RABBITMQ_DEFAULT_PASS: password
#restart: always
volumes:
- rabbit-volume:/var/lib/rabbitmq
volumes:
rabbit-volume:
driver: local
driver_opts:
type: 'none'
o: 'bind'
device: '$PWD/rabbitmq' |
Java Samples
Producer - Basic Publish
Code Block |
---|
language | java |
---|
title | TestProducer.java |
---|
|
package com.irdeto.keystone.service.notification;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.Channel;
public class TestProducer {
private final static String NOTIFICATION_QUEUE_NAME = "hellokeystone_notifications";
public static void main(String[] argv) throws Exception {
String message = "{\n" +
" \"type\": \"notificationType\",\n" +
" \"payload\": { \n" +
" \"name\": \"value\",\n" +
" \"name\": \"value\"\n" +
" }\n" +
"}";
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
factory.setUsername("rabbit");
factory.setPassword("password");
try (Connection connection = factory.newConnection();
Channel channel = connection.createChannel()) {
channel.queueDeclare(NOTIFICATION_QUEUE_NAME, falsetrue, false, false, null);
String message = "Hello World!";
channel.basicPublish("", NOTIFICATION_QUEUE_NAME, null, message.getBytes("UTF-8"));
System.out.println(" [x] Sent '" + message + "'");
}
}
}
|
Consumer - Basic Consume
Code Block |
---|
language | java |
---|
title | TestConsumer.java |
---|
|
package com.irdeto.keystone.service.notification;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.DeliverCallback;
public class TestConsumer {
private final static String NOTIFICATION_QUEUE_NAME = "hellokeystone_notifications";
public static void main(String[] argv) throws Exception {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
factory.setUsername("rabbit");
factory.setPassword("password");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(NOTIFICATION_QUEUE_NAME, falsetrue, false, false, null);
System.out.println(" [*] Waiting for messages. To exit press CTRL+C");
DeliverCallback deliverCallback = (consumerTag, delivery) -> {
String message = new String(delivery.getBody(), "UTF-8");
System.out.println(" [x] Received '" + message + "'");
};
channel.basicConsume(NOTIFICATION_QUEUE_NAME, true, deliverCallback, consumerTag -> { });
}
} |
Management API
You can install an optional management plugin for RabbitMQ. This will allow you to query RabbitMQ from CLI and REST.
CLI:
See https://www.rabbitmq.com/management-cli.html
REST:
https://pulse.mozilla.org/api/
Sample Rest queries
Code Block |
---|
GET http://localhost:15672/api/vhosts
GET http://localhost:15672/api/queues
GET http://localhost:15672/api/queues/test |
References