topic drop messages when full

geneMog Member Posts: 3

I am sending messages to a temporary topic from my jms endpoint. Jms provide a timeToLive property that configures how long the message lives on the topic.

I was trying to figure out if there is a way to configure on jms to tell the broker to drop messages from the topic if the topic is full and not block it.

I dont see any such configuration on jms, is this a configuration created on the broker or is it even a valid question or does solace never block if the topic is full and moves messages to a disk or something. Please let me know



  • amackenzie
    amackenzie Member, Employee Posts: 260 Solace Employee

    I am not sure I understand your use case.

    If you are sending to a non-durable (which I assume is what you mean about "temporary"), then you are using non-persistent messages.

    TTL and "full" are concepts associated with persistent messages that get stored in a queue (or in the case of durable topics, Durable Topic Endpoints in PubSub+).

    So for non-persistent messages, there is no storage of the messages and therefore no ability to have the queue be full. If there is no subscriber to the topic active, the messages just disappear.

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

    A couple things here. As long as your JNDI connection factory is not configured to use "Direct Transport for Non-Persistent Messages":

    then when you subscribe to your temporary topic, the broker will create a anonymous Topic Endpoint for you with your subscription added:

    By default, Topic Endpoints will not block new messages if they are full when another one is received. You can see this in the Topic Endpoints advanced Settings:

    But the broker will just silently discard messages if your Topic Endpoint is totally full. But for the TTL aspect to your question, again by default the Topic is configured to respect whatever TTL value the publisher is setting on each message, and to discard old messages:

    If you have configured a queue within the Message VPN called #DEAD_MSG_QUEUE then the expired messages will go in there.

    BTW, on nomenclature... when you say "from my JMS endpoint", are you referring to a JMS publisher application?

    Hope that helps.