ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [RabbitMQ] HelloWorld
    Java 2019. 6. 22. 01:37

    2개의 자바 프로그램을 만들어본다. 생산자는 "Hello World"를 송신하고, 소비자는 메시지를 받아 출력한다. 

    아래  다이어그램에서 "P"는 우리의 생산자이고 "C"는 우리의 소비자이다. 중간에 박스는 큐를 나타낸다. - RabbitMQ는 소비자 대신에 메시지 버퍼를 제공한다.

    RabbitMQ 자바 클라이언트 라이브러리를 사용하기 위해서는 SLF4J APISLF4J Simple이 필요하다. 해당 jar파일을 다운받아 자바클래스와 동일한 워킹 디렉토리에 위치시킨다.

    송신 프로그램

    import com.rabbitmq.client.Channel;
    import com.rabbitmq.client.Connection;
    import com.rabbitmq.client.ConnectionFactory;
    
    public class Send {
    
        private final static String QUEUE_NAME = "hello";
    
        public static void main(String[] argv) throws Exception {
            ConnectionFactory factory = new ConnectionFactory();
            factory.setHost("localhost");
            try (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("UTF-8"));
                System.out.println(" [x] Sent '" + message + "'");
            }
        }
    }
    

    수신 프로그램

    import com.rabbitmq.client.Channel;
    import com.rabbitmq.client.Connection;
    import com.rabbitmq.client.ConnectionFactory;
    import com.rabbitmq.client.DeliverCallback;
    
    public class Recv {
    
        private final static String QUEUE_NAME = "hello";
    
        public static void main(String[] argv) throws Exception {
            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");
    
            DeliverCallback deliverCallback = (consumerTag, delivery) -> {
                String message = new String(delivery.getBody(), "UTF-8");
                System.out.println(" [x] Received '" + message + "'");
            };
            channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag -> { });
        }
    }

    출처
    https://github.com/rabbitmq/rabbitmq-tutorials/tree/master/java

    https://www.rabbitmq.com/tutorials/tutorial-one-java.html

    'Java' 카테고리의 다른 글

    [Java] Meta Annotation 메타 어노테이션  (0) 2019.06.22
    [Java] Access Modifiers 접근 제한자  (0) 2019.06.22
    [RabbitMQ] MacOS에 설치하기  (0) 2019.06.22
    [Java] Zookeeper Java 예제  (0) 2019.06.05
    [Java] 문자열 입력  (0) 2019.06.01

    댓글

Designed by Tistory.