私のシナリオでは、キューには巨大な(32MB +)メッセージが含まれており、メッセージのタイプを識別する情報が最初の数メッセージのバイト数。JMS IBM MQ - ブラウズ時に返されるメッセージのサイズを制限する
低レベルのWebsphere MQ APIを使用する場合は、特定の(制限された)サイズのバッファを用意し、MQGMO_ACCEPT_TRUNCATED_MSGフラグを含むオプションを使用してMQGETコールを発行できます。 MQGETによって返された理由コードはおそらくMQRC_TRUNCATED_MSG_ACCEPTED(これは予期される)です。
これは、各メッセージの最初の(言うことができます)100バイトの代わりに、それぞれの完全なバッファを返すロジックの一種「すべてをブラウズ」非常に高速を書くために1を可能にします。
java JMSを使用して同様のことを実行できますか? session.createBrowser(queue ...)または browser.getEnumeration()呼び出しのいずれかでバッファサイズを指定できるものが見つかりませんでした。
ありがとうございました。
IBM MQではあまりにも固有の感じがします。 JMSでこのようなことは見たことがありません。悪いデザインのように聞こえる。メッセージの種類を知る必要がある場合は、各メッセージの種類ごとにトピックを使用する必要があります。このようなものがあなたを助けますか? https://docs.oracle.com/cd/E19798-01/821-1841/bncfl/index.html – duffymo
ありがとう、私はあなたが提供したリンクを見ました。それは基本的に私がやっていることです。問題は、ブラウジングの通常の方法は、多くのリソースを取るそれらの巨大なメッセージをすべて返すことです。 私が可能な答えに最も近いのはこれです[リンク] https://stackoverflow.com/questions/34377185/spring-jms-ibm-mq-how-to-set-message-buffer-size-or-wait-タイムアウト) - そのポストは、ibm mq固有のjms api(私はvanilla javax.jmsクラスを使用しています)を使用しています。彼はmqrc_truncated_msg_failedを持っていますが、チャネルの問題が原因であるかのように見えます。 –
あなたは私のIBMに対する同情を持っています。私はJMSに固執することを好み、ビッグブルーにあまりにも密接に結びついていない方がいいです。 – duffymo