42.2. Producer 인터페이스 구현
42.2.1. 생산자를 구현하는 다른 방법 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
다음 방법 중 하나로 생산자를 구현할 수 있습니다.
42.2.2. 동기 생산자를 구현하는 방법 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
예 42.4. “DefaultProducer 구현” 동기 생산자를 구현하는 방법을 간략하게 설명합니다. 이 경우 응답을 수신할 때까지 Producer.process() 블록을 호출합니다.
예 42.4. DefaultProducer 구현
개요에서 process() 메서드는 일반적으로 다음과 같이 구현됩니다.
- 교환에 In 메시지가 포함되어 있고 지정된 교환 패턴과 일치하는 경우 In 메시지를 지정된 엔드포인트로 보냅니다.
-
교환 패턴에서 Out 메시지를 수신할 것으로 예상되는 경우 Out 메시지가 수신될 때까지 기다립니다. 이 경우
process()메서드가 상당한 시간 동안 차단됩니다. -
응답이 수신되면
exchange.setOut()을 호출하여 응답을 교환 오브젝트에 연결합니다. 응답에 fault 메시지가 포함된 경우Message.setFault(true)를 사용하여 Out 메시지의 fault 플래그를 설정합니다.
42.2.3. 비동기 생산자 구현 방법 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
예 42.5. “CollectionProducer 구현” 비동기 생산자를 구현하는 방법을 간략하게 설명합니다. 이 경우 동기 프로세스() 메서드와 비동기 프로세스() 메서드를 모두 구현해야 합니다(추가 AsyncCallback 인수를 사용합니다).
예 42.5. CollectionProducer 구현
- 1
org.apache.camel.impl.DefaultProducer클래스를 확장하고 AsyncProcessor 인터페이스를 구현하여 사용자 지정 비동기 생산자 클래스인 CustomProducer 를 구현합니다.- 2
- 상위 끝점에 대한 참조를 사용하는 생성자를 구현합니다.
- 3
- 동기
프로세스()메서드를 구현합니다. - 4
- 비동기
프로세스()메서드를 구현합니다. 비동기 메서드를 여러 가지 방법으로 구현할 수 있습니다. 여기에 표시된 접근 방식은 하위 스레드에서 실행되는 코드를 나타내는java.lang.Runnable인스턴스인task를 생성하는 것입니다. 그런 다음 Java 스레딩 API를 사용하여 하위 스레드에서 작업을 실행합니다(예: 새 스레드를 생성하거나 기존 스레드 풀에 작업을 할당하여). - 5
- 일반적으로 비동기
프로세스()메서드에서false를 반환하여 교환이 비동기적으로 처리되었음을 나타냅니다. - 6
CustomProducerTask클래스는 하위 스레드에서 실행되는 처리 코드를 캡슐화합니다. 이 클래스는Exchange개체의 복사본,교환및AsyncCallback개체,콜백을 프라이빗 멤버 변수로 저장해야 합니다.- 7
run()메서드에는 In 메시지를 생산자 엔드포인트에 전송하고 응답을 수신할 때까지 대기하는 코드가 포함되어 있습니다. 응답(Out message 또는 Fault message)을 수신하고 이를 교환 오브젝트에 삽입한 후callback.done()을 호출하여 호출자에게 처리가 완료되었음을 알려야 합니다.