13.4. XML メッセージのフィルタリング
AMQ Broker では、XPath を使用して XML ボディーが含まれるテキストメッセージをフィルターできます。XPath (XML Path Language) は、XML ドキュメントからノードを選択するためのクエリー言語です。
テキストベースのメッセージのみがサポートされます。大きなメッセージのフィルタリングはサポートされていません。
テキストベースのメッセージをフィルターするには、XPATH '<xpath-expression>
の形式のメッセージセレクターを作成する必要があります。
メッセージボディーの例
<root> <a key='first' num='1'/> <b key='second' num='2'>b</b> </root>
XPath クエリーに基づくフィルター
XPATH 'root/a'
XPath はメッセージのボディーに適用され、XML の解析を必要とするため、フィルタリングは通常のフィルターよりも大幅に遅くなります。
XPath フィルターは、以下のプロトコルを使用するプロデューサーとコンシューマー間でサポートされます。
- OpenWire JMS
- Core ( および Core JMS)
- STOMP
- AMQP
XML Parser の設定
デフォルトでは、Broker によって使用される XML Parser は JDK によって使用されるプラットフォームのデフォルト DocumentBuilderFactory インスタンスです。
XPath デフォルト設定に使用される XML パーサーには、以下の設定が含まれます。
ただし、実装固有の問題に対応するために、機能をカスタマイズするには、artemis.profile
設定ファイルでシステムプロパティーを設定します。
org.apache.activemq.documentBuilderFactory.feature:prefix
機能設定の例
-Dorg.apache.activemq.documentBuilderFactory.feature:http://xml.org/sax/features/external-general-entities=true