在我的場景中,隊列包含巨大(32MB +)消息,並且數據的結構使得標識消息類型的信息包含在前幾個消息的字節。JMS IBM MQ - 限制瀏覽返回消息的大小
使用低級Websphere MQ API時,可以提供特定(有限)大小的緩衝區,然後使用包含MQGMO_ACCEPT_TRUNCATED_MSG標誌的選項發出MQGET調用。 MQGET返回的原因代碼可能會是MQRC_TRUNCATED_MSG_ACCEPTED(這是預期的)。
這使得人們可以編寫一個非常快速的「瀏覽全部」類型的邏輯,返回每個消息的第一個(比方說)100個字節,而不是每個消息的完整緩衝區。
是否有可能使用java JMS做類似的事情?我一直無法找到允許我在 session.createBrowser(隊列...)或 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