전체 글 (66) 썸네일형 리스트형 mybatis NumberFormatException 동적 쿼리를 작성하지도 않았고 단지 select from where 문을 작성하는데 발생한 에러 원인 @Builder 사용시, mapper와 순서를 맞춰줘야 함. 해결 순서 맞추기 or @AllArgsConstructor, @NoArgsConstructor 사용. JUnit 기본 필요 라이브러리 : junit, assertj testImplementation 'org.assertj:assertj-core:3.19.0' testImplementation 'org.junit.jupiter:junit-jupiter:5.7.1' junit 페턴 given/when/then import org.junit.jupiter.api.Test; public class TestExample { @Test void test(){ //given //when //then } } given(준비): 어떠한 데이터가 준비되었을 때 when(실행): 어떠한 함수를 실행하면 then(검증): 어떠한 결과가 나와야 한다. 예시 import java.util.List; import java.util.Random; .. RabbitMQ 작업대기열(Work Queue) Java 2 저번시간에는 Queue가 데이터를 한번씩 나눠서 consumer 에게 전달을 하는 코드를 짜봤다. 하지만 이렇게 짜게 된다면 문제가 발생하는데 예를들어 데이터가 무거운거 한번 가벼운거 한번이 번갈아 가면서 Queue에 들어오게 되면 한개의 consumer는 너무 바빠지고, 하나의 consumer는 놀게되는 이슈가 발생한다 이를 해결하기 위해서 tcp 3 way handshake를 사용하는데, 비동기 처리 방식에서 사용되는 연결 설정 과정이다. 간단하게 설명하면 Queue가 consumer에게 지금 데이터를 받을 수 있는 상황인지 먼저 노크를 한번 해주는 과정이라고 생각 하면 된다. 이때 consumer 가 Queue에게 데이터를 받을 수 있다 라고 신호를 보내주는게 Ack를 보낸다고 이해하고 넘어가자 그.. RabbitMQ 작업대기열(Work Queue) Java RabbitMQ 작업대기열(Work Queue) 란? produce 가 queue에 데이터를 넣은면 queue는 구독하고 있는 consume에게 순차적으로 데이터를 넘겨주는것을 말한다. 구현 방법 먼저 앞서 사용했던 Send 와 Recv Class를 조금 바꾸어서 구현 해보겠다. 1. Send 를 변형한 Class 를 NewTask 라고 하겠다. String message = String.join(" ", argv); channel.basicPublish("", "hello", null, message.getBytes()); System.out.println(" [x] Sent '" + message + "'"); NewTask의 보낼 String 데이터를 선언한다. 2. Recv 를 변형한 Class를.. RabbitMQ Recv Java Recv class 에도 똑같이 Queue_name을 선언해 주고, 서버와의 연결을 만들어 준다. private final static String QUEUE_NAME = "hello"; public static void main(String[] args) throws Exception { ConnectionFactory factory = new ConnectionFactory(); factory.setHost("localhost"); Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); 다음 대기열을 선언한다. channel.queueDeclare(QUEUE_NAME, false, fal.. Error:java: error: release version 5 not supported 오류 문제점: Error:java: error: release version 5 not supported 오류 발생 원인 및 해결 maven 프로젝트의 기본값인 1.5 java 버전을 1.8로 높임. Error:Cannot determine path to 'tools.jar' library for 17 오류 문제점 Error:Cannot determine path to 'tools.jar' library for 17 오류 발생 원인 및 해결 자바 버전을 11로 낮추었더니 정상 작동. RabbitMQ Sendding Java 먼저 Send class를 설정하고, Queue 이름을 설정한다. public class Send { private final static String QUEUE_NAME = "hello"; } 이후, 서버에 대한 연결을 해준다. ConnectionFactory factory = new ConnectionFactory(); factory.setHost("localhost"); try (Connection connection = factory.newConnection(); Channel channel = connection.createChannel()) { } 지금은 localhost에 연결을 하지만 다른 ip나 호스트 주소를 추가하여 넣을 수 있다. channel.queueDeclare(QUEUE_NAM.. 이전 1 2 3 4 ··· 9 다음