top 30 jms interview questions
새롭고 경험 많은 전문가를위한 가장 인기있는 JMS 인터뷰 질문 및 답변 :
JMS 또는 Java Messaging Service는 현재 전 세계적으로 안전하고 안정적이며 확장 가능한 메시지 전달을위한 가장 지배적 인 모델 중 하나가되었습니다.
이 모델은 매우 잘 구성되어 있으며 다양한 형태의 메시징 기술 및 프로토콜을 지원합니다.
업계 전반에 걸쳐이 주제에 대해 자주 묻는 질문과 답변을 자세히 살펴 보겠습니다.
가장 인기있는 JMS 인터뷰 질문
다음은 가장 자주 묻는 Java Message Service 인터뷰 질문 목록과 자세한 답변입니다.
Q # 1) JMS 란 무엇입니까?
대답: Java Messaging Service는 시스템에서 메시지를 만들고 읽고 보내고받을 수있는 Java API입니다.
알고리즘의 가장 중요한 부분은 매우 잘 구성되어 있으며 한 응용 프로그램이 다른 응용 프로그램에 메시지를 보낼 수 있도록하고 구독자에게 기능을 브로드 캐스팅 할 수도 있습니다.
Q # 2) JMS에서 제공하는 통신 유형은 무엇입니까? 자세히 설명하십시오.
답변 :이 API는 두 가지 유형의 통신을 제공합니다.
- 비동기 : 메시지는 클라이언트에게 전달되며 클라이언트가이를 받기 위해 요청을 보낼 필요는 없습니다. 발신자 애플리케이션이 전송하면 클라이언트 애플리케이션이이를 수신합니다.
- 신뢰성 : API 프로토콜이 수신자 애플리케이션의 가용성을 보장하면 여기에서 메시지가 클라이언트 애플리케이션으로 전송됩니다.
Q # 3) JMS에서 사용할 수있는 메시징 모델은 몇 개입니까?
대답: 특히 JMS에서 제공하는 두 가지 유형의 모델이 있습니다.
포인트 투 포인트 : 이름 자체에서 알 수 있듯이 발신자가 단일 수신자에게 메시지를 보내는 일대일 메시징 메커니즘입니다. 메시지가 준비되면 수신자 애플리케이션에서 사용할 수 있으며 그 때까지 메시지가 대기열에 저장됩니다.
가장 중요한 부분은 보낸 사람과받는 사람 응용 프로그램간에 시간과 관련하여 종속성이 없다는 것입니다.
게시 및 구독 : 이 메시징 메커니즘은 JMS에서 매우 독특하게 설계되었습니다.
예를 들어 , 한 독자가 관심있는 블로그 하나를 구독합니다. 이제 특정 블로그에 관심이있는 여러 사람이있을 수 있습니다.
그리고 그들은 그 블로그를 구독 / 등록합니다. 이제 새 게시물이나 주제가 블로그에 게시되면 등록 된 모든 독자가 업데이트를 받게됩니다. 이 메시징 모델을 게시 및 구독이라고합니다.
Q # 4) 대기열이란 무엇입니까?
대답: JMS의 지점 간 메커니즘에서 소스 응용 프로그램은 대상 응용 프로그램에 메시지를 보내고 메시지가 사용 가능 해지면 대상 응용 프로그램에서 사용되며 그 때까지 해당 시간의 저장 장치를 대기열이라고합니다.
Q # 5) 주제는 무엇입니까?
대답: 발행 / 구독 모델에서 클라이언트 / 게시자 애플리케이션은 하나의 메시지를 생성하고 해당 메시지는 모든 구독자 또는 대상 애플리케이션에서 사용할 수 있습니다. 이 메시지를 주제라고합니다.
Q # 6) JMS와 RPC의 작동 메커니즘의 원리적인 차이점은 무엇입니까?
대답: 두 모델의 식별 가능한 차이점은 메시지가 전달되는 방식에 있습니다.
JMS의 경우 송신자 애플리케이션은 메시지를 대상 애플리케이션으로 보낸 다음 프로그래밍 기준에 따라 다른 메시지를 다시 대기 / 또는 처리합니다.
RPC의 경우 메시지가 대상에 도달하면 스레드가 완료되고 컨트롤이 메시지 전송을 담당하는 메서드로 돌아옵니다.
Q # 7) 메시지 지향 미들웨어 란 무엇입니까?
대답: Message Oriented Middleware는 JMS 작업 모델에서 보낸 사람 응용 프로그램과 대상 응용 프로그램 사이에서 작동하는 소프트웨어입니다.
Q # 8) 메시지 지향 미들웨어는 JMS의 Point to Point 모델과 관련하여 보낸 사람과받는 사람 구성 요소 사이에 시간 종속성이없는 데 어떻게 책임이 있습니까?
대답: MOM 미들웨어는 보낸 사람과받는 사람 구성 요소 사이에서 작동하므로 메시지를 처리하고 대기열 메커니즘을 통해 메시지를 전송합니다. 따라서 대상 / 수신자 애플리케이션이 메시지를 수신 / 읽을 수있게 될 때까지 메시지는 큐에 저장됩니다.
가장 중요한 부분은 수신자 애플리케이션이 메시지를 수신 할 때까지 메시지 전송을 담당하는 메소드가 점유되지 않는다는 것입니다. 따라서 발신자 및 수신자 응용 프로그램은 시간 종속성없이 독립적으로 작동합니다.
Q # 9) JMS에서 지원하는 메시징 유형의 이름을 지정하십시오.
대답: JMS에서 지원하는 메시지 유형은 다음과 같습니다.
- 문자 메시지
- 스트림 메시지
- 지도 메시지
- 바이트 메시지
- 개체 메시지
Q # 10) 바이트 메시지 란 무엇입니까?
대답: Bytes Message 개체는 실제로 중단되지 않은 바이트 스트림을 포함하는 메시지를 보내는 역할을하며 메시지 인터페이스에서 상속하고 바이트 메시지 본문을 추가합니다. 메시지 수신자는 메시지 해석을 담당합니다.
JMS API를 사용하면 이러한 유형의 메시지를 전송할 수 있지만 Oracle 문서에 따라 속성 포함이 메시지 형식에 영향을 줄 수 있으므로 일반적으로 사용되지 않습니다.
Q # 11) StreamMessage 란 무엇입니까?
대답: StreamMessage 개체는 Java 프로그래밍 언어로 기본 데이터 유형의 스트림을 보내는 데 사용됩니다. 데이터는 순차적으로 채워지고 읽 힙니다. Message 인터페이스에서 상속되고 스트림 메시지 본문을 추가합니다.
java.io.DataInputStream 및 java.io.DataOutputStream은 이러한 유형의 메시징을 지원하는 API입니다.
Q # 12) 문자 메시지 란?
대답: 텍스트 메시지는 java.lang.String에 의해 처리되는 메시지이며 메시지 인터페이스에서 상속되고 텍스트 메시지 본문을 추가합니다. 텍스트가 포함 된 메시지를 전송하는 데 사용됩니다.
Q # 13) Object 메시지 란?
대답: 객체 메시지는 일반적으로 메시지 본문에 직렬화 가능한 Java 객체를 포함합니다. 일반적으로 수신자 애플리케이션은 읽기 전용 모드로 Object 메시지를 수신합니다.
Q # 14)지도 메시지 란?
대답: Map Message 객체의 메시지 본문에는 이름-값 쌍 집합이 포함되어 있습니다. 여기서 이름은 문자열 객체이고 값은 Java 기본 요소입니다. 항목은 이름별로 순차적으로 또는 무작위로 액세스 할 수 있습니다. Map Message는 실제로 Message 인터페이스에서 상속되며 Map을 포함하는 메시지 본문을 추가합니다.
Q # 15) JNDI 란? JMS와 어떤 관련이 있습니까?
대답: JNDI는 Java 이름 지정 및 디렉토리 인터페이스입니다. 응용 프로그램이 데이터베이스에 연결되어있는 경우 응용 프로그램 개발자는 데이터베이스 연결 자격 증명에 대해 걱정하는 대신 해당 데이터베이스에 이름을 지정할 수 있습니다.
JNDI API는 이름 지정 디렉터리에 액세스하고 이름과 데이터베이스 개체 간의 매핑을 찾아 그에 따라 연결합니다. 메시지를 보내기 위해 connectionFactory (큐 또는 토픽)에 연결하는 동안이 메커니즘을 사용할 수 있습니다.
Q # 16) 발신자 애플리케이션은 JMS를 통해 메시지를 어떻게 전송 / 전송합니까?
대답: 다음은 JMS를 통해 메시지를 보내는 몇 가지 방법입니다.
- JNDI를 구현하여 connectionFactory의 신임 정보를 검색하십시오.
- 구현을 위해 connectionFactory 객체를 만듭니다.
- 대상 개체 (하나 이상)를 식별합니다.
- connectionFactory 오브젝트를 활용하여 JMS 연결을 설정하십시오.
- 하나 이상의 세션을 만듭니다.
- 세션 및 대상을 사용하여 필요한 MessageProducers 및 MessageConsumers를 만듭니다.
- 채널을 사용하여 통신하십시오.
Q # 17) JMS의 구성 요소 이름을 지정하십시오.
답변 : JMS의 구성 요소는 다음과 같습니다.
- JMS 공급자
- JMS 클라이언트
- 메시지
- 관리 객체
- 네이티브 클라이언트
Q # 18) JMS에서 관리 객체 란 무엇입니까?
대답: JMS 관리 객체는 실제로 JMS 클라이언트에 연결하기 위해 관리자가 구성한 자격 증명이며 JNDI에서 정의됩니다. 이러한 개체는 서버 내부의 JMS 클라이언트와 연결하기 전에 구성됩니다.
Q # 19) JMS Provider의 기능은 무엇입니까?
대답: JMS Provider는 기본적으로 보안 및 데이터를 처리합니다.
메시지가 안전한 방식으로 전달되는지 확인하고 데이터 암호화 및 데이터 인코딩 표준을 처리하며 비 JMS 클라이언트에 대한 메시지 호출을 담당합니다.
Q # 20) JMS 세션이란 무엇입니까?
대답: JMS 세션은 JMS 메시지 전송에서 수신까지의 전체 흐름을 제어하는 상태입니다.
Q # 21) JMS를 사용하여 자동화 된 이메일을 보낼 수 있습니까?
유튜브 MP3 변환기 바이러스 없음
대답: JMS에는이 기능을 지원하는 표준 API가 없지만 JavaMail을 사용하여 자동화 된 이메일을 보낼 수 있습니다.
Q # 22) JMS 컨텍스트에서 메시지 리스너의 기능은 무엇입니까?
대답: 메시지 리스너는 일반적으로 비동기 전달의 경우 메시지 소비자와 함께 사용됩니다. 비동기 전달의 경우 messageConsumer에 MessageListener의 객체를 등록 할 수 있습니다.
Q # 23) JMS 클라이언트 란 무엇입니까?
대답: JMS 클라이언트는 기본적으로 메시지 본문을 호출하고 사용하는 Java 프로그래밍 언어로 작성된 구성 요소입니다.
Q # 24) 메시지 란?
대답: 메시지는 JMS 클라이언트간에 통신하는 구성 요소가 아니라 본문입니다.
Q # 25) JMS 메시지 생성자의 기능은 무엇입니까?
대답: 메시지 생성자는 기본적으로 수신자 응용 프로그램에 메시지를 보내기 위해 JMS 세션에 의해 생성되는 구성 요소입니다.
세션을 생성하고 MessageProducer 인터페이스를 구현하여 대상 객체, 대기열 객체 또는 주제 객체를 정의 할 수 있습니다. 객체 대신 인수에 null을 할당하여 생산자를 지정되지 않은 것으로 선언 할 수 있습니다. 나중에 send 메소드에서 Java 메소드 오버로딩을 사용하여 목적지, 메시지를 인수 또는 매개 변수로 지정할 수 있습니다.
Q # 26) JMS 메시지 소비자의 기능은 무엇입니까?
대답: 메시지 소비자는 기본적으로 수신자 응용 프로그램에서 메시지를 수신하기 위해 JMS 세션에 의해 생성되는 구성 요소입니다. 세션을 생성하고 MessageConsumer 인터페이스를 구현하여 대상 객체, 대기열 객체 또는 주제 객체를 정의 할 수 있습니다.
세션 오브젝트와 함께 createDurableSubscriber를 사용하여 지속 가능한 토픽 구독자를 작성할 수 있지만 큐 작성이 아닌 발행 / 구독 모델에 대한 토픽을 작성하는 데 사용할 수 있습니다.
소비자 개체가 생성되면 소비자가 활성화됩니다. 객체를 사용하여 메시지를 받고 보낼 수 있습니다. 이를 비활성화하기 위해 MessageConsumer에 대한 close 메소드를 사용할 수 있습니다.
Q # 27) JMS 큐 브라우저의 기능은 무엇입니까?
대답: 이전에 큐의 개념을 논의했듯이 수신자가 메시지를 수신 할 때까지 메시지가 저장됩니다. 큐에서 메시지를 찾아보고 헤더 값을 표시하는 기능은 QueueBrowser 개체에서 지원됩니다.
하나를 통해 QueueBrowser 객체를 만들 수 있습니다. JMS 세션.
Q # 28) JMS 메시지 선택기의 기능은 무엇입니까?
대답: JMS 메시지 선택기는 기본적으로 특정 애플리케이션에 대해 수신하는 메시지를 필터링하는 API입니다. 메시지 선택기는 실제로 메시지 필터링을 담당하는 JMS 공급자에 작업을 할당합니다.
메시지 선택기는 실제로 문자열 유형 값을 입력으로 사용합니다.
WatchType =’Titan’OR WatchType =’Rolex’
createConsumer 및 createDurableSubscriber 메서드를 사용하면 메시지 소비자를 만들 때 메시지 선택기를 인수로 지정할 수 있습니다.
Q # 29) JMS로 인한 예외 처리 방법은?
대답: JMS API에서 JMS 관련 예외를 발생시키는 기본 클래스는 JMSException입니다.
JMSException 포착은 JMS API와 관련된 모든 예외를 처리하는 일반적인 방법을 제공합니다.
JMS 예외 클래스에는 API 문서에 설명 된 다음 하위 클래스가 포함됩니다.
- IllegalStateException
- InvalidClientIDException
- InvalidDestinationException
- InvalidSelectorException
- JMSSecurityException
- MessageEOFException
- MessageFormatException
- MessageNotReadableException
- MessageNotWriteableException
- ResourceAllocationException
- TransactionInProgressException
- TransactionRolledBackException
Q # 30) JMS와 관련하여 트랜잭션되지 않은 세션은 어떻게 처리합니까?
대답: 트랜잭션되지 않은 세션의 경우 QueueSession 또는 TopicSession 메서드의 세션 개체를 생성하는 동안 전달 된 인수를 기준으로 메시지가 확인됩니다.
아래 옵션은 일반적으로 비즈니스 요구 사항에 따라 사용됩니다.
- 세션. AUTO_ACKNOWLEDGE : 세션 객체를 생성하는 동안이 인수를 전달하면 JMSException이 발생하면 신뢰할 수있는 소비자가 몇 초 동안 기다린 다음 MessageConsumer.receive 메소드를 호출하여 메시지를 다시 수신합니다. 장애 조치로 인해 메시지가 전달되지 않으면 다시 전달됩니다.
- 세션. CLIENT_ACKNOWLEDGE : 세션 객체를 생성하는 동안이 인수를 전달하면 JMSException이 발생하면 사용자는 Message.aknowledge 또는 MessageConsumer.receive를 호출하기 전에 Session.recover를 호출합니다. Session.recover는 확인되지 않은 메시지를 복구하고 다시 전달해야하기 때문입니다.
- 세션. DUPS_OK_ACKNOWLEDGE : 세션 객체를 생성하는 동안이 인수를 전달하면 JMSException이 발생하면 신뢰할 수있는 소비자가 몇 초 동안 기다린 다음 MessageConsumer.receive 메소드를 호출하여 메시지를 다시 수신합니다. 그러나 여기서는 장애 조치 전에이 모드에서와 같이 중복 메시지 또는 동일한 메시지를 다시받을 수 있으며 확인 된 메시지가 다시 배달 될 수 있습니다.
노트 : 여기 예제 코드에서 QueueSession을 사용했지만 TopicSession을 사용하여 이러한 인수를 전달할 수 있습니다.
Q # 31) Oracle Glassfish 서버의 기능은 무엇입니까? Apache Tomcat 서버에 추가 된 이점은 무엇입니까?
대답: Glassfish 서버는 실제로 애플리케이션 서버이며 웹 서버로도 사용될 수 있습니다. 즉, 웹 브라우저의 HTTP 요청을 처리 할 수 있습니다.
애플리케이션 서버로서 서블릿 / JSP 및 EJB 구성 요소 측면에서 모든 유형의 Java Enterprise 애플리케이션을 처리하도록 개발되었습니다.
반면 Tomcat 서버는 실제로 서블릿 또는 JSP 구성 요소를 처리하는 데 일반적으로 사용되는 서블릿 컨테이너입니다.
Q # 32) JMS 연결을 시작하기 위해 EJB 세션을 생성하는 방법은 무엇입니까?
대답: 아래 코드에서 작성한대로 JMS 용 EJB 세션을 생성 할 수 있습니다.
Q # 33) Message Driven Bean Clustering의 개념을 설명하십시오.
대답: EJB 구성 요소 기반 응용 프로그램이 응용 프로그램 서버 클러스터에 배포 된 경우 응용 프로그램에 대한 가용성과 확장 성을 제공하기 위해 클러스터 내의 모든 서버에서 실행되도록 구성 할 수 있습니다.
EJB가 MDB (Message Driven Bean) 형태 인 경우 클러스터 내의 모든 서버에서 실행될 수 있으며 클러스터의 여러 애플리케이션 서버와 병렬로 시작될 수 있습니다.
결론
이 JMS 인터뷰 질문 목록이 정말 유익했기를 바라며이 목록에 대한 철저한 지식이 있으면 모든 인터뷰를 성공적으로 해결할 수있을 것입니다.
바라건대, 이것은 당신에게 많은 도움이되었을 것입니다 !! 행복한 학습 !!