JMSToolBox not showing messages greater than 4MB

vimalp90
vimalp90 Member Posts: 2
We use JMSToolBox to browse the messages in Solace Queue since there is no built-in tool. We now faced strange behaviour likely caused by large message sizes.

What happened:

* We published messages >5 MB to Solace
* We could see the messages in Solace Portal(message count increased)
* When using JMSToolbox and looking into we can't see them (even not showing up)

What did we test then:

* Sent small messages
* All worked fine in the portal and JMSToolBox
* Send then 1 bigger message >5 MB
* Did not show in JMSToolBox
* Send after that smaller message again
* Did now show in JMSToolBox

Comments

  • marc
    marc Member, Administrator, Moderator, Employee Posts: 916 admin
    edited March 11 #2

    Hi @vimalp90,

    Interesting 🤔, it does sound like a bug or limitation. In the last step below "Did now show in JMSToolBox" are you saying that after sending the smaller messages that both the smaller and bigger messages all showed up? or only the smaller messages and the larger ones were just missing altogether?

    * Sent small messages
    * All worked fine in the portal and JMSToolBox
    * Send then 1 bigger message >5 MB
    * Did not show in JMSToolBox
    * Send after that smaller message again
    * Did now show in JMSToolBox

    Also does anything show up in the logs?

  • vimalp90
    vimalp90 Member Posts: 2
    Hi @marc, after we send the large message, we can't see anything sent after that, even a small message is not visible followed by a large message. Which logs you are referring to?
  • marc
    marc Member, Administrator, Moderator, Employee Posts: 916 admin

    Hi @vimalp90,

    The JMS ToolBox logs. Looking at the repo it looks like they should be under <user_home>/.jtb ?

  • marc
    marc Member, Administrator, Moderator, Employee Posts: 916 admin

    Also I checked with Solace support to see if they were aware of this issue. They verified that the Solace JMS API (used by JMSToolbox) is able to browse messages larger than 5MB so the issue is probably going to be within JMSToolBox itself. If you haven't already it would be good to create an issue over on their github repo: https://github.com/jmstoolbox/jmstoolbox/issues

  • Aaron
    Aaron Member, Administrator, Moderator, Employee Posts: 525 admin

    If you'd like a command-line utility (Java) to browse queues, you can check out: https://github.com/solacelabs/pretty-dump

    It's similar to SdkPerf (which can also browse queues!) but can pretty-print certain payloads.

    $ bin/PrettyDump aaron.messaging.solace.cloud aaron-demo-singapore me pw b:q1
    
    PrettyDump initializing...
    PrettyDump connected to VPN 'aaron-demo-singapore' on broker 'aaron.messaging.solace.cloud'.
    Attempting to browse queue 'q1' on the broker... success!
    
    Browse all messages -> press [ENTER],
     or enter specific Message ID,
     or range of IDs (e.g. "25909-26183" or "9517-"): 31737085
    
    

    So you can enter either a specific message ID, a range, or just all messages on the queue. Also: you can use the shorthand f:<queueName> instead to just browse the latest message off a queue and then exit.

  • titou10
    titou10 Member Posts: 2
    JMSToolBox does not have such limitations
    However, there are a few methods of the "SolConnectionFactory" used by JTB, related to "large messages". Maybe this is related to the problem.
    Namely:
    - setLargeMessaging(Boolean largeMessaging)
    - setLargeMessagingConsumeTimeoutInMillis(Integer consumeTimeoutInMillis)
    - setLargeMessagingIncompletePolicy(String incompletePolicy)
    - setLargeMessagingMaximumSize(Integer maxSize)
    - setLargeMessagingSegmentSize(Integer segmentSize)

    I can not find anything about those "large message" settings and the effect of using those methods.
    Maybe you have a pointer where the methods are documented and their usage explained?

    (I'm the author of JMSToolBox)
  • marc
    marc Member, Administrator, Moderator, Employee Posts: 916 admin

    Hi @titou10,

    Those settings wouldn't apply here. That is for a controlled availability feature to allow the API to send/receive messages that are larger than what the broker supports out of the box. If the messages are already on the broker and we're just trying to browse them that shouldn't be an issue.

    Hi @vimalp90,

    Unfortunately I don't think we can make any progress here until we see the logs. Might as well grab them both from JMSToolBox and the event log from the broker so we can see both sides. **Note that if you have access to support it might be worth opening a support ticket as they'll have a SLA to respond faster than I will probably be able to :)

  • titou10
    titou10 Member Posts: 2
    edited March 14 #9
    @marc
    ok. FMI, Is there a place where those options/features are documented?
    @vimalp90
    In the meantime, I tried to "setLargeMessaging(true)" on the connection factory on the JMSToolBox side but the connection fails with exception:

    com.solacesystems.jcsmp.InvalidPropertiesException: Large messaging is not supported for transacted sessions
    at com.solacesystems.jcsmp.impl.JCSMPBasicSession.validateLargeMessaging(JCSMPBasicSession.java:1586)
    at com.solacesystems.jcsmp.impl.JCSMPBasicSession.createTransactedSession(JCSMPBasicSession.java:1452)
    at com.solacesystems.jms.SolSession.<init>(SolSession.java:112)
    at com.solacesystems.jms.SolConnection.createSession(SolConnection.java:338)
    at org.titou10.jtb.jms.model.JTBConnection.connect(JTBConnection.java:261)

    So even if this option was pertinent to the problem, it would be possible in the conecte of JTB
    (sorry I do not know how to format code on here..)
  • marc
    marc Member, Administrator, Moderator, Employee Posts: 916 admin
    edited March 14 #10

    Code formatting should work if you start with 3 tics ``` for multi-line or 1 tic ` for inline…but yea sometimes it doesn't work as expected for some reason.

    As a controlled availability feature it isn't well documented publicly b/c it has a lot of caveats that come with it and I don't think anyone can just use it. I opened a request to get it better documented :)