메세지 하나를 보내는 Producer와 그것을 받아서 출력하는 Consumer를 만든다
여러 언어에 대한 클라이언트 라이브러리는 이곳에서 다운로드 가능하다
...
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.Channel;
...
public class Send {
private final static String QUEUE_NAME = "hello";
public static void main(String[] argv) throws java.io.IOException {
// RabbitMQ 커넥션 생성
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost"); // 서버 호스트 입력
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
// 메세지를 전송하기 위해 큐를 선언한다
// 큐는 멱등성을 갖는다
// 큐가 존재하지 않으면 생성한다
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
// 메세지 전송
String message = "Hello World!";
channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
System.out.println(" [x] Sent '" + message + "'");
// 채널과 커넥션을 종료한다
channel.close();
connection.close();
}
}
...
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Consumer;
import com.rabbitmq.client.DefaultConsumer;
public class Recv {
private final static String QUEUE_NAME = "hello";
public static void main(String[] argv)
throws java.io.IOException, java.lang.InterruptedException {
// RabbitMQ 커넥션 생성
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
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");
// 큐에 메세지가 들어올 경우 handleDelivery가 호출된다
Consumer consumer = new DefaultConsumer(channel) {
@Override
public void handleDelivery(String consumerTag,
Envelope envelope,
AMQP.BasicProperties properties,
byte[] body) throws IOException {
String message = new String(body, "UTF-8");
System.out.println(" [x] Received '" + message + "'");
}
};
channel.basicConsume(QUEUE_NAME, true, consumer);
}