top 30 jms interview questions
初心者および経験豊富な専門家向けの最も人気のあるJMSインタビューの質問と回答:
現在、JMSまたはJavaメッセージングサービスは、世界中でメッセージを安全で信頼性が高くスケーラブルに配信するための最も主要なモデルの1つになっています。
このモデルは非常によく構成されており、さまざまな形式のメッセージング技術とプロトコルをサポートしています。
業界全体でこのトピックに関してよく寄せられる質問と回答を詳しく見ていきましょう。
最も人気のあるJMSインタビューの質問
以下に、Java MessageServiceの面接で最もよく寄せられる質問のリストと詳細な回答を示します。
Q#1)JMSとは何ですか?
回答: Java MessagingServiceはJavaAPIであり、システムがメッセージを作成、読み取り、送信、および受信できるようにします。
アルゴリズムの最も重要な部分は非常によく構成されており、あるアプリケーションが別のアプリケーションにメッセージを送信できるようにし、サブスクライバーへのブロードキャスト機能も可能にします。
Q#2)JMSが提供する通信の種類は何ですか?詳細に説明してください。
回答:このAPIは、次の2種類の通信を提供します。
- 非同期: メッセージはクライアントに配信されます。クライアントがメッセージを受信するためにリクエストを送信する必要はありません。送信側アプリケーションが送信すると、クライアントアプリケーションはそれを受信します。
- 信頼性のある: ここでは、APIプロトコルが受信側アプリケーションの可用性を保証すると、メッセージがクライアントアプリケーションに送信されます。
Q#3)JMSで利用可能なメッセージングモデルの数はいくつですか?
回答: 具体的には、JMSによって提供されるモデルには次の2つのタイプがあります。
ポイントからポイントへ: 名前自体が示すように、送信者が単一の受信者にメッセージを送信する1対1のメッセージングメカニズムです。メッセージは、準備ができたら受信側アプリケーションで使用でき、それまではメッセージがキューに保存されます。
その最も重要な部分は、送信側アプリケーションと受信側アプリケーションの両方の間の時間に関してゼロの依存関係があることです。
パブリッシュおよびサブスクライブ: このメッセージングメカニズムは、JMSによって非常に独自に設計されています。
例えば 、1人の読者が、その人が興味を持っている1つのブログを購読します。今、特定のブログに興味を持っている人が何人かいるかもしれません。
そして、彼らはそのブログを購読/登録します。これで、新しい投稿またはトピックがブログに公開されると、登録されているすべての読者に更新が提供されます。このメッセージングモデルは、パブリッシュアンドサブスクライブと呼ばれます。
Q#4)キューとは何ですか?
回答: JMSのポイントツーポイントメカニズムでは、ソースアプリケーションが宛先アプリケーションにメッセージを送信します。メッセージは、使用可能になると宛先アプリケーションによって消費され、その時点までのストレージユニットはキューと呼ばれます。
Q#5)トピックとは何ですか?
回答: パブリッシュ/サブスクライブモデルでは、クライアント/パブリッシャーアプリケーションが1つのメッセージを生成し、そのメッセージはすべてのサブスクライバーまたは宛先アプリケーションで使用できます。このメッセージはトピックと呼ばれます。
Q#6)JMSとRPCの動作メカニズムの主な違いは何ですか?
回答: 2つのモデルの識別可能な違いは、メッセージの配信方法にあります。
JMSの場合、送信側アプリケーションはメッセージを宛先アプリケーションに送信し、プログラミング基準に従って別のメッセージを再度待機または処理します。
RPCの場合、メッセージが宛先に到達するとスレッドが完了し、制御がメッセージ転送を担当するメソッドに戻ります。
Q#7)メッセージ指向ミドルウェアとは何ですか?
回答: メッセージ指向ミドルウェアは、JMS作業モデルの送信側アプリケーションと宛先アプリケーションの間で機能するソフトウェアです。
Q#8)メッセージ指向ミドルウェアは、JMSのポイントツーポイントモデルに関して、送信側コンポーネントと受信側コンポーネントの間の時間依存性にどのように責任がありますか?
回答: MOMミドルウェアは、送信側コンポーネントと受信側コンポーネントの間で動作するため、メッセージを処理し、キューイングメカニズムによってメッセージを転送します。したがって、宛先/受信者アプリケーションがメッセージの受信/読み取りに使用できるようになるまで、メッセージはキューに保存されます。
最も重要な部分は、受信側アプリケーションがメッセージを受信するまで、メッセージの送信を担当するメソッドが占有されないことです。したがって、送信側アプリケーションと受信側アプリケーションの両方が、時間に依存することなく独立して動作します。
Q#9)JMSでサポートされているメッセージングタイプに名前を付けます。
回答: JMSでサポートされるメッセージのタイプは次のとおりです。
- テキストメッセージ
- メッセージのストリーミング
- マップメッセージ
- バイトメッセージ
- オブジェクトメッセージ
Q#10)バイトメッセージとは何ですか?
回答: Bytes Messageオブジェクトは、実際には、中断されないバイトのストリームを含むメッセージの送信を担当し、メッセージインターフェイスから継承して、バイトメッセージ本文を追加します。メッセージの受信者は、メッセージの解釈に責任があります。
JMS APIでは、このタイプのメッセージの転送が可能ですが、Oracleのドキュメントによると、プロパティを含めるとメッセージ形式に影響する可能性があるため、通常は使用されません。
Q#11)StreamMessageとは何ですか?
回答: StreamMessageオブジェクトは、Javaプログラミング言語でプリミティブデータ型のストリームを送信するために使用されます。データは順番に入力され、読み取られます。メッセージインターフェイスから継承し、ストリームメッセージ本文を追加します。
java.io.DataInputStreamおよびjava.io.DataOutputStreamは、これらのタイプのメッセージングをサポートするAPIです。
Q#12)テキストメッセージとは何ですか?
回答: テキストメッセージは、java.lang.Stringによって処理されるメッセージであり、メッセージインターフェイスから継承し、テキストメッセージの本文を追加します。これは、テキストを含むメッセージを転送するために使用されます。
Q#13)オブジェクトメッセージとは何ですか?
回答: オブジェクトメッセージは通常、メッセージ本文にシリアル化可能なJavaオブジェクトを含みます。通常、受信側アプリケーションは、読み取り専用モードでオブジェクトメッセージを受信します。
Q#14)マップメッセージとは何ですか?
回答: Map Messageオブジェクトのメッセージ本文には、名前と値のペアのセットが含まれています。名前はStringオブジェクトであり、値はJavaプリミティブです。エントリには、名前で順番にまたはランダムにアクセスできます。マップメッセージは、実際にはメッセージインターフェイスから継承し、マップを含むメッセージ本文を追加します。
Q#15)JNDIとは何ですか?それはJMSとどのように関連していますか?
回答: JNDIは、Java Naming and DirectoryInterfaceです。アプリケーションがデータベースに接続されている場合、アプリケーション開発者はデータベース接続の資格情報を気にすることなく、そのデータベースに名前を付けることができます。
JNDI APIはネーミングディレクトリにアクセスし、名前とデータベースオブジェクト間のマッピングを見つけて、それに応じて接続します。このメカニズムは、メッセージを送信するために任意のconnectionFactory(キューまたはトピック)に接続しているときに使用できます。
Q#16)送信側アプリケーションはJMSを介してメッセージをどのように転送/送信しますか?
回答: 以下に、JMSを介してメッセージを送信するいくつかの方法を示します。
- JNDIを実装して、connectionFactoryの資格情報を検索します。
- 実装用のconnectionFactoryオブジェクトを作成します。
- 宛先オブジェクト(1つ以上)を識別します。
- connectionFactoryオブジェクトを利用して、JMS接続を確立します。
- 1つ以上のセッションを作成します。
- セッションと宛先を使用して、必要なMessageProducersとMessageConsumersを作成します。
- チャネルを使用して通信します。
Q#17)JMSのコンポーネントに名前を付けます。
回答:JMSのコンポーネントは次のとおりです。
- JMSプロバイダー
- JMSクライアント
- メッセージ
- 管理対象オブジェクト
- ネイティブクライアント
Q#18)JMSの管理対象オブジェクトとは何ですか?
回答: JMS管理対象オブジェクトは、実際には、JMSクライアントに接続するために管理者によって構成され、JNDIで定義されている資格情報です。これらのオブジェクトは、サーバー内のJMSクライアントに接続する前に構成されます。
Q#19)JMSプロバイダーの機能は何ですか?
回答: JMSプロバイダーは基本的にセキュリティとデータを処理します。
メッセージが安全な方法で配信されることを保証する責任があり、データ暗号化とデータエンコーディングの標準も処理し、非JMSクライアントのメッセージを呼び出す責任があります。
Q#20)JMSセッションとは何ですか?
回答: JMSセッションは、JMSメッセージの送信から受信までの合計フローを制御する状態です。
Q#21)自動化された電子メールの送信にJMSを使用できますか?
4年の経験のためのSQL開発者インタビューの質問
回答: JMSにはこの機能をサポートする標準APIはありませんが、JavaMailを使用して自動メールを送信できます。
Q#22)JMSのコンテキストでのメッセージリスナーの機能は何ですか?
回答: メッセージリスナーは通常、非同期配信の場合にメッセージコンシューマーで使用されます。非同期配信の場合、MessageListenerのオブジェクトをmessageConsumerに登録できます。
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プロバイダに割り当てます。JMSプロバイダは実際にメッセージのフィルタリングを担当します。
メッセージセレクタは、実際には文字列型の値を入力として受け取ります。
WatchType = ’Titan’またはWatchType = ’Rolex’
createConsumerメソッドとcreateDurableSubscriberメソッドを使用すると、メッセージコンシューマーを作成するときに、引数としてメッセージセレクターを指定できます。
Q#29)JMSによって引き起こされた例外を処理するにはどうすればよいですか?
回答: JMSAPIによるJMS関連の例外のスローを担当するメインクラスはJMSExceptionです。
JMSExceptionをキャッチすると、JMSAPIに関連するすべての例外を処理する一般的な方法が提供されます。
JMS Exceptionクラスには、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が発生した場合、Session.recoverは未確認のメッセージの回復と再配信を担当するため、コンシューマーはMessage.aknowledgeまたはMessageConsumer.receiveを呼び出す前にSession.recoverを呼び出します。
- セッション。 DUPS_OK_ACKNOWLEDGE: セッションオブジェクトの作成中にこの引数を渡すと、JMSExceptionが発生した場合、信頼できるコンシューマーは数秒間待機してから、メソッドMessageConsumer.receiveを呼び出してメッセージを再度受信します。ただし、ここでは、フェイルオーバー前にこのモードと同じように重複メッセージまたは同じメッセージが再配信される可能性があり、確認済みメッセージが再配信される可能性があります。
注意 :ここでは、サンプルコードでQueueSessionを使用しましたが、TopicSessionを使用してこれらの引数を渡すことができます。
Q#31)Oracle Glassfishサーバーの機能は何ですか? Apache Tomcatサーバーに加えてどのような利点がありますか?
回答: Glassfishサーバーは実際にはアプリケーションサーバーであり、Webサーバーとしても使用できます。つまり、WebブラウザーからのHTTP要求を処理できます。
アプリケーションサーバーとして、サーブレット/ JSPおよびEJBコンポーネントの観点からすべてのタイプのJavaEnterpriseアプリケーションを処理するように開発されています。
一方、Tomcatサーバーは実際にはサーブレットまたはJSPコンポーネントの処理に一般的に使用されるサーブレットコンテナです。
Q#32)JMS接続を開始するためにEJBセッションを作成するにはどうすればよいですか?
回答: 以下のコードで記述したように、JMS用のEJBセッションを作成できます。
Q#33)メッセージ駆動型Beanクラスタリングの概念について説明してください。
回答: EJBコンポーネントベースのアプリケーションが任意のアプリケーションサーバークラスターにデプロイされている場合、クラスター内の任意のサーバーで実行するように構成して、アプリケーションの可用性とスケーラビリティを提供できます。
EJBがMessageDriven Bean(MDB)の形式である場合、EJBはクラスター内の任意のサーバーで実行でき、クラスター内の複数のアプリケーションサーバーと並行して開始できます。
結論
このJMS面接の上位の質問のリストが本当に参考になることを願っています。このリストを十分に理解していれば、面接を成功させることができると確信しています。
うまくいけば、これはあなたに大いに役立つでしょう!ハッピーラーニング!!