私の理解はそれです:
この図 IBMから は役に立ちます:
私にとって、 IBMからのこの説明 は違いにあまり光を当てていません:
1つの本当の 私が見つけた違いはそれです :
セッションBeanとエンティティBean [別名MDP]を使用すると、JMSメッセージを同期的に受信できますが、非同期では受信できません。サーバーリソースの拘束を回避するために、サーバー側コンポーネントで同期受信のブロックを使用しないことをお勧めします。 メッセージを非同期で受信するには、メッセージ駆動型Bean[MDB]を使用します。
したがって、これまでのところ満足できないリストは次のとおりです。
私の質問は:他に違いはありますか?違いを明確にできますか?
参照:
@ジェフリーナイト:私の経験に基づいて明確にしようと思います。
MDBは、受信メッセージを消費するためのBeanであることを理解しています。ここで、特定のMDBがどの宛先からどの宛先に消費するかを指定する必要があります。
MDBは基本的にメッセージのエンドポイントです。
websphereのフローは:-
着信メッセージ->メッセージリスナーがリッスン->リスナーポート-> MDBに配信
したがって、通常、開発者はMDBを作成し、次のようにejb-jar.xmlでメッセージの宛先の詳細を指定します。
<message-driven-destination>
<destination-type>javax.jms.Queue</destination-type>
</message-driven-destination>
<res-ref-name>jms/QCF</res-ref-name>
<resource-ref>
<res-type>javax.jms.QueueConnectionFactory</res-type>
<res-auth>Container</res-auth>
</resource-ref>
デプロイヤーはリスナーポートを作成し、デプロイされたMDBをリスナーポートに関連付ける必要があります。上記で指定されたQueueConnectionFactoryは、キューへの接続を作成するために作成されます。
JCA後、MDBはJCAリソースとして扱われます。 JCA仕様には、メッセージングフレームワークAPIも組み込まれています。 JCAの場合のフローは次のとおりです。-
incoming message --> listened by Message listener --> Resource Adapter-->deliver to MDB
JCAは、JDBC、JMS、EISなど、あらゆるタイプのリソースで機能するように作成されているため、あらゆるアダプターの構成を作成するための一般的な「アクティベーション仕様」の方法があります。 ra.xmlファイルには、その特定のアダプターが機能するために必要なアクティベーション仕様の種類が記載されています。アクティベーション仕様はランタイムエンティティではなく、リソースアダプターによって使用される構成の詳細にすぎません。上記の場合、JCAアダプターは、アクティベーション仕様に記載されているキュー接続ファクトリからの接続を使用します。したがって、基本的に上記の両方の場合のキュー接続ファクトリは同じです。
websphereの場合、メッセージングにはSIB(Service Integration Bus)宛先のいずれかを使用できますORメッセージング用のwebsphereMQなどの外部ソフトウェア。
メッセージングのSIB宛先の場合:-SIBはJCAリソースアダプタを実装しています。したがって、SIBで宛先を使用するMDBは、アクティベーション仕様を使用して宛先の詳細を指定できます。リソースアダプタモジュールはメッセージングエンジンと対話し、メッセージをMDBに配信できます。
websphere MQのような外部メッセージングフレームワークの場合:-websphere MQはJCAアダプターを実装していないため、websphereMQにある宛先に接続するようにリスナーポートを構成する必要があります。 MDBにメッセージを配信するのはリスナーポートです。
つまり、どちらの場合も、キュー接続ファクトリを使用してキュー接続を取得します。ある場合には、メッセージの配信に使用されるリソースアダプター(アクティベーション仕様の形式の構成情報を含む)であり、他の場合と同様に、メッセージの配信に使用されるリスナーポート(キューとファクトリにバインドされている)です。
これが今明らかになることを願っています。
どちらも構成ですが、アウトバウンドメッセージには接続ファクトリが使用され、インバウンドメッセージングにはアクティベーション仕様が使用されます。
これは私がIBMから得たものです。
アクティベーション仕様は、JCA1.5仕様の一部です。 MDBアプリケーションは、アクティベーション仕様を使用して、インバウンド・メッセージを処理するためにWebSphereMQキュー・マネージャーに接続します。アクティベーション仕様には、セキュリティ設定などの他のオプションも用意されています。
JMS接続ファクトリには、接続の作成方法に関する情報が含まれています。アプリケーションがJMS接続を必要とする場合、ファクトリは接続インスタンスを作成します。接続ファクトリは、前に作成したアクティベーション仕様と同じ接続情報を必要としますが、MDBからのアウトバウンドメッセージに使用されますが、アクティベーション仕様はインバウンドメッセージに使用されます。
ConnectionFactoryのクライアントはアプリケーションです。アプリケーションは、ConnectionFactoryを使用して、キューを介してメッセージングエンジンとの間でメッセージをプッシュ/プルします。
ActivationSpecのクライアントはEJBコンテナです。 EJBコンテナはActivationSpecを取得して、MDBまたはMDPのMessageEndpointFactoryをResourceAdapterに登録します。クライアントがメッセージをメッセージングエンジンにプッシュすると、メッセージングエンジンは、登録されたMessageEndpointFactoryを使用して、メッセージをアプリケーション(MDBやMDPなど)に転送します。これにより、アプリケーションは、クライアントがキューからメッセージをプルしようとすることをポーリングまたはブロックする必要がなく、メッセージを「非同期に」受信できます。