As you are using the term subject
, I am assuming that we are talking about messages being sent from an unknown sender using TIBCO Rendezvous to your listener?
TIBCO Rendezvous is based on multicast which is excellent when it comes to performance, but not quite as marvellous when it comes to reliability and guaranteed delivery. TIBCO has put a few tricks into the product which overcome these shortcomings. In your case you could use RVCM (Rendezvous Certified Messaging) which store messages on disk in a ledger file until all listeners has sent an acknowledgement that they have received the message OK. E.g. if your listener is turned off for a few hours, the messages will be delivered then the listener is started again.
Please note that for the above to work, the listener must stop listening for the specified time frame. If this does not suffice, I would suggest inserting a custom-built component acting as a time-based router in between the current sender and listener.
Note also that the other common TIBCO messaging platform, TIBCO EMS would serve even better for this purpose (the RV ledger files are proprietary whereas messages on an EMS queue can be accessed using JMS).
Both EMS and RV can be used with a variety of languagues, including Java.