"Guaranteed Message Publish Window Size" with (Solace) JMS

Hi there
In one of our applications we use the com.solacesystems.sol-jms (version 10.6.4).
I want to configure publishing as described in

I found this:

Is there a way to do that programmatically? Something like (this example does not seem to work):


SolConnection solConnection = (SolConnection) connection;
solConnection.getJCSMPProperties().setProperty(JCSMPProperties.PUB_ACK_WINDOW_SIZE, Integer.valueOf(255));

Best regards
Mike

Some additional information:

Hi @Mike13,
The Solace JMS API supports JMS version 1.1 which only supports a synchronous sends, so essentially waiting for an ack before returning. Because of this the Solace JMS API only allows for a window size of 1 when publishing persistent messages. As you’ve found, you can change the window size for non-persistent messages. This is a bit more clear when modifying the Publisher Window Size (msgs) property in the JMS Connection Factory settings in PubSub+ Manager.

A few other notes:

  • The property you refer to at this link is for the consumer side only. Not publishing.
  • Another option would be to use the Solace JCSMP API if you need to publish persistent messages in a larger window size.

@Ragnar please feel free to chime in if I slipped up anywhere :slight_smile:

Hi @marc
Thank you for your reply!
We will now switch to non persisted for messages where possible.
Solace JCSMP API is unfortunately currently not a variant.
Best regards
Mike

Hi @marc,
sorry to bring up that old topic again, but we just ran into this issue and I’ve found your notes here.
What confuses me a lot is the part of the documentation that says: “for non-persistent guaranteed messages sent by the Publisher”.

So, how could a non-persistent message be guaranteed?

Or in other words, our szenario is like that:
We’re sending JMS messages to a dynamic Solace Topic (including country code and other dynamic values) on an HA Broker and have - depending on the dynamic values - around 1 to 50 queues with matching subscriptions per message.

As we cannot tollerate any data loss, we assumed persistent is the right and obvious setting, however - what would be the difference in this scenario if we’d choose Non-Persistent?
Would the message be ACKed to the Publisher before it is persisted in any of the subscribing queues or synched to the passive node?

best regards
Andreas