This chapter explains the parameters that can be configured for JMS storage objects of type ‘Topic’. In general, these parameters are the most common ones used in the Publish-Subscribe (PubSub) model of JMS and they can be configured in the default profile at the node FioranoMQ > Fiorano > mq > pubsub > TopicSubsystem through Offline configuration using eStudio.
For information on how to configure the FioranoMQ Server in Offline mode, refer the Offline Profile Management section and for Online Configuration (through the Web Management Console), refer the FioranoMQ Web Management Console section.
DupsOkBatchSize
The DupsOkBatchSize parameter indicates the number of messages received by a consumer for each consumer acknowledgement. A User specifies the number of messages after which client sends an acknowledgement to the server. This command will run only when the client application is accepting messages and the acknowledgement mode is DUPS_OK. The acknowledgement mode is specified when creating a session. (See JMS specifications for details on how to create a session.)
Values:
The default value for the parameter DupsOkBatchSizeis 20. Any positive integer may be used. Negative values so not throw an exception. Therefore it is important to check that positive integers have been given.
Example:
This mode is used when duplicate messages are accepted. There is a possibility of duplicate messages being delivered when the Server is down or the Client is not available.
Dependencies:
This flag is dependent on the consumer session acknowledgment mode.
RedeliveryTriesOnListenerException
The RedeliveryTriesOnListenerException parameter specifies the number of redelivery tries when a RuntimeException is thrown on the consumer’s message listener. This flag is used only when a consumer session acknowledgment mode is auto_acknowledge or dups_ok_acknowledge. The redelivered messages will be discarded once this value is reached. This parameter is useful if the OnMessage logic in the consume fails occasionally due to very high usage of the threads or the CPU.
Values:
The RedeliveryTriesOnListenerException parameter default value is two. Any positive integer may be used. A negative value given to this parameter will make the client application not deliver messages to the consumer.
Example:
This flag is used especially when message is inserted in some other database or sent to some other server which may fail first time and subsequent calls may pass. The OnMessage logic of client should make sure that only RuntimeException is thrown.
Dependencies:
This flag is dependent on the consumer session acknowledgement mode.
DelayInMsgDeliveryOnListenerException
The DelayInMsgDeliveryOnListnerException parameter specifies the delay in message redelivery when RuntimeException is thrown in MessageListener. This parameter is used in AUTO_ACKNOWLEDGE or DUPS_OK_ACKNOWLEDGE mode only. The redelivered messages are discarded once the maximum redelivery tries value is reached.
Values:
The default value set for the DelayMsgDeliveryOnListenerException parameter is -1. This value indicates that there is no delay between redelivery tries for a message when RuntimeException occurs in MessageListener. Any positive value in Long range can be assigned to this parameter. If a negative value is assigned to this parameter there will not be a delay between attempts.
Dependencies:
Dependencies are only applicable when the Client Session is either in AUTO_ACKNOWLEDGEMENT or DUPS_OK_ACKNOWLEDGE modes.
PublishWait
The PublishWait parameter specifies the wait interval of the publisher before the next published call.This is the minimum wait time when server crosses the PublishBackOffThreshold limit. This flag is used in scenarios where the subscriber’s processing logic is going to take a significant amount of time.
Values:
The default value for the PublishWait parameter is 50 milliseconds. (This parameter does not accept values less than or equal to zero).
Example:
This flag can be used for the pub/sub model. This flag should be increased when a larger message is accepted and more processing time for a subscriber is needed.
Dependencies:
The PublishWait flag can be used only if EnablePublisherSlowDown is set to yes.
Restart of server required: FALSE
PublishWaitTimeRecheckUnits
The PulishWaitTimeRecheckUnits parameter is used for the flow control algorithm. When the PSQ size reaches 95% the publisher is made to wait repeatedly until the size drop downs to 85%. The MaxWaitTime is distributed into segments of time during which the size of the PSQ is checked. This applies to all the publishers.
Values:
The default value for the PublishWaitTimeRecheckUnits parameter is eight. Any positive integer may be assigned to this parameter.
Example:
This flag may be used when there are a certain number of slow subscribers in use.
Dependencies:
The PublishWaitTimeRecheckUnits parameter will be used only when EnablePublisherSlowdown is set to true and MaxPersistentStoreSize is not set to -1.
Restart of server required: FALSE
MaxNumberOfTopics
The Maximum number of topics that can be created using this parameter by default is -1, which is allowing an infinite number of topics to be created. If this value is set to a finite value, the JMS provider will allow the creation of topics to the number stated. A message is displayed when this limit is reached.
Values:
The default value set for the MaxNumberOfTopics parameter is -1 The number of topics that can be created is unlimited. Any positive integer and -1 can be assigned to this parameter.
EnablePublisherSlowdown
EnablePubilsherSlowdown slows down the publisher when messages get stored in the disk after the session buffer overflows due to a slow subscriber and due to the PSQ size reaching its threshold value. Setting this parameter to false may lead to a message loss for slow subscribers. This property applies to all the publishers.
Values:
The default value for the EnablePublisherSlowdown parameter is true. The values that can be assigned to the parameter are true/false.
Example:
This flag may be used when there are slow subscribers.
Dependencies:
Publish Slowdown behavior occurs only when MaxPersistentStoreSize is set to a finite positive integer value.
Restart of server required: FALSE
DropOldestMessage
DropOldMessage is a parameter indicating whether or whether new messages should be dropped after the PSQ crosses the maximum value and all Server buffers are filled.
Values:
The default value for this parameter is true. The values that can be assigned to this parameter are true/false.
Dependencies:
The DropOldestMessage parameter comes to use only when PublisherSlowDown is disabled in the Server and slow subscribers are active. This applies to the session level of the subscriber. This situation can also occur when the PSQ is filled with persistent messages.
Restart of server required: FALSE
DefaultStorageTypeForTopics
The parameter DefaultTypeForTopics acquires the default storage types for Topics.
Values:
The default value set for this parameter is File. The values that maybe assigned to this parameter are File/RDBMS. If this parameter is set to File, all data on topics is stored in the file based storage. If this parameter is set to RDBMS, all data on topics is stored in the RDBMS based storage.
Dependencies
If this value is set to RDBMS, then the parameter EnableRDBMS should be set to true. If this value is set to File, then the parameter EnableRDBMS should be set to false.
StoreMessageToDisk
Store message to disk when session buffer overflows due to slow subscriber. The messages will be stored in the PSQ only when this is set to true. If set to false, the messages will be added directly to the ConnectionBuffer which will lead to an extreme slowdown of publishers and excess message loss in some cases. This applies to all the topics.
Values:
The default value for this parameter is true. The valid values that can be assigned to this parameter are true/false.
Restart of server required: TRUE
EnableSnooperOnAllTopics
EnableSnooperOnAllTopics specifies whether the Snooper Service is enabled on all topics. When snooping is enabled on a queue, all the messages that are sent to this queue are copied to a topic named SYSTEM_MESSAGESNOOPER_TOPIC, so that any subscribers registered to this topic can snoop messages sent to that particular topic.
Values:
The default value set for this parameter is false. The values that may be assigned to this parameter are true/false. When set to true, a SnooperListener is added to each one of the topics and all the incoming messages are snooped and added to the topic SYSTEM_MESSAGESNOOPER_TOPIC.
Example:
This parameter can be used to monitor messages sent to the topics by the clients. In order to do this, just enable this parameter and subscribe to the topic SYSTEM_MESSAGESNOOPER_TOPIC.
Restart of server required: FALSE
EventTopicName
Specifies the name of the topic on which events are published and processed.
Values:
The default value for this parameter is Events_Topic. This value is not assignable.
IsForceFullyKillDSubscriber
IsForceFullyKillDSubscriber allows the forcefully killing of the Durable Subscriber. If set to true, a new Durable Subscriber gets registered with the Server. The former Durable Subscriber will be forcefully killed and this event will be successfully registered with the Server. This parameter can be applied to all Durable Subscribers.
Values:
The default value for the IsForceFullyKillDSubscriber parameter is false. The values that may be assigned to this parameter are true/false.
Dependencies:
This flag is used only for Durable Subscribers. This parameter has no effect if EnsureUniquenessOfClientID is set to true
Restart of server required: TRUE
MaxPersistentStoreSize
MaxPersistentStoreSize indicated the maximum size of the persistent queue in the disk. If EnablePublisherSlowDown is enabled, this limit will never be reached. If EnablePublisherSlowDown is disabled, any NP messages coming in after the limit has exceeded will be dropped. If IgnorePSQSizeForPersistentMessages is disabled at the same time as EnablePublisherSlowDown, even Persistent Messages will be dropped after the limit has been reached. This buffer is popularly known as PSQ and applies to each session of a slow subscriber.
Values:
The default value for the MaxPersistentStoreSize parameter is 1073741824 bytes. The values that may be assigned to this parameter are any positive values in the Long range and -1. If set to -1, the maximum limit for the PSQ size will be unlimited.
Restart of server required: TRUE
UseMessagePersisterForDurableSubscriber
The UseMessagePersisterForDurableSubscriber parameter is used to Enable/Disable the use of a separate algorithm used in persisting messages for a Durable Subscriber.
Values:
The default value for the UseMessagePersisterForDurableSubscriber parameter is false. The values that can be assigned to this parameter are true/false.
Restart of server required: FALSE
MaxMsgInOneRecv
MaxMsgInOneRecv parameter indicates the maximum number of messages that can be received in one call. This parameter can be applied to all subscribers.
Values:
The default value for the MaxMsgInOneRecv parameter is 128. The value that may be assigned to this parameter is any positive Integer value.
BasicAllowedSize
BasicAllowedSize parameter indicates the maximum buffer limit on a connection. If the maximum buffer limit is exceeded, every push in the connection buffer will have to wait until some space is created. This buffer does not usually go over the maximum limit allowed since any overflow is avoided through the flow control between the session layers at the RTL and at the server.
Values:
The default value for the BasicAllowedSize parameter is 131072 bytes. The values that can be assigned to this parameter are positive integral values.
MaxConnectionBufferSize
Maximum size (in bytes) for a connection buffer to hold messages that need to be delivered to subscriptions created under the connection. When the limit is reached, every push in the connection buffer waits for MessagePublishTimeout or until some space gets created. In general, this buffer limit will not exceed, as the flow control logic between the server and the RTL session layer manages the limit.
Values
The default value for the MaxConnectionBufferSize parameter is 2097152 bytes. The values that can be assigned to this parameter are positive integral values.
Restart of server required: TRUE
UseOptimizedTCPReceive
The UseOptimizedTCPReceive parameter is enabled. This algorithm was introduced in the FioranoMQ 7.5 version and is meant to provide high performance at the TCP layer on the subscriber side. This parameter may be applied to all Subscribers.
Values:
The default value for the UseOptimizedTCPReceive parameter is true. The values that may be assigned to this parameter are true/false.
EnableMessageMonitoring
The EnableMessageMonitoring parameter enables message monitoring and storage of data. If set to true, the data-traffic on the topic is stored in InMemory as well and is stored on the disk as well. Traffic can be monitored by viewing the files or by calling the required JMX API. This parameter may be applied to all Topics.
Values:
The default value for the EnableMessageMonitoring parameter is false. And values that may be assigned to this parameter are true/false.
FilePath
The FilePath parameter returns the file path set to store server messages that monitor data. Data is stored only if EnableMessageMonitoring is set to true.
Values:
The default value for the FilePath parameter is %FIORANO_HOME%\fmq\profiles\FioranoMQ\run\PUBSUB\JMSX_MESSAGEMONITOR. Any valid file path may be assigned to this parameter.
Dependencies:
To store server message data the EnableMessageMonitoring flag should be set to true.
TimeDuration
The TimeDuration parameter monitors the time duration in seconds of the flow of messages. The value of this parameter should be more than five seconds. Traffic is monitored after each interval in message flow if the EnableMessageMonitoring is set to true.
Values:
The default value for the TimeDuration parameter is 3600 seconds. The values that may be assigned to this parameter are any positive integer values greater than 5.
PurgeLevelIndex
The PurgeLevelIndex parameter indicated the number of persistent messages allowed prior after which purging is done. This parameter will function when OptimizedTCPReceive is set to false. This parameter may be applied to all Topics.
Values:
The default value for the PurgeLevelIndex parameter is 100. The values that may be assigned to this parameter are any positive integer values.
Dependencies:
This parameter is used only for persistent messages and only when UseOptimizedTCPReceive is set to false.
Restart of server required: TRUE
MinPurgeDifference
The MinPurgeDifference parameter indicates the minimum number of persistent messages allowed after which purging is done. Purging is done in batches in the Server and this parameter indicates the minimum number of delete requests that the server will accumulate prior to deleting messages. This parameter may be applied to all Topics.
Values:
The default value for the MinPurgeDifference parameter is 50. The values that may be assigned to this parameter are any positive integer values.
Dependencies:
This parameter is used only for persistent messages and only when UseOptimizedTCPReceive is set to false.
Restart of server required: TRUE
AllowDeletionOfSubtopics
AllowDeletionOfSubtopics is a boolean parameter determining if deletion of SubTopics is allowed. If set to true then deleting a topic will automatically delete the SubTopics. This parameter may be applied to all Topics.
Values:
The default value for the AllowDeletionOfSubtopics parameter is true. The values that may be assigned to this parameter are true/false.
Restart of server required: FALSE
MessagePublishTimeout
The MessagePublishTimeout parameter indicates the maximum time a publisher will wait while trying to push messages to a connection level buffer when it is full. This parameter also indicates the maximum time a publisher will wait to push the message to the PSQ after it has reached 95% of its maximum limit. This parameter applies to non_persistent messages as well as for persistent messages. The waiting time does not end until the buffer reaches 85% usage. This parameter may be applied to all the publishers.
Setting the MessagePublishTimeout to a -1 ensures that the publisher does not slow down.
Values:
The default value for the MessagePublishTimeout parameter is 120000 milliseconds. The values that can be assigned to this parameter are -1 (no wait) or any positive integer value.
Restart of server required: FALSE
PublishBackoffThreshold
The PublishBackoffThreshold parameter indicates the PSQ size threshold after which the backoff algorithm is activated. Once the threshold is reached then flow control will be activated and the publishers will be made to wait for the buffers to clear.
Values:
The default value for the PublishBackoffThreshold parameter is 0.6. The values that may be assignable to this parameter are any positive Double values < 1.
Restart of server required: FALSE
IgnorePSQSizeForPersistentMessages
The IgnorePSQSizeForPersistentMessages parameter indicates whether to persist persistent messages in PSQ even through the PSQ is full. If set to true if the MaxPersistentStoreSize (PSQ) is exceeded the messages will be stored to the disk. This parameter may be applied to all Publishers.
Values:
The default value for the IgnorePSQSizeForPersistentMessages parameter is true. The values that may be assignable to this parameter are true/false.
Dependencies:
This parameter is applicable only for messages with in the persistent delivery mode.
Restart of server required: FALSE
EnableSessionStateChangeNotification
This parameter defines whether to raise notifications related to the topicSession's state changes corresponding to slow subscribers. That is, whenever the underlying subscriber undergoes state changes - becomes slow or normal - a notification is raised to all event listeners.
In order to receive this event, the the object (which implements javax.jms.NotificationListener) should be added on the MBean specified by the object name -
"Fiorano.jmx.notifications:ServiceType=EventManager,Name=TopicConnectionEventManager".
Kindly refer to the "fmq/samples/JMX/JMXNotifications.java" for more information.
Values: The default value for this parameter is FALSE and the valid values are TRUE and FALSE.
LoadLVCIndicesAtLookup
This parameter determines whether to load the Last value cache indices at the time when the message is first sent to the JMS Topic. If set to true, the Last value cache indices are loaded at the time of Topic lookup. These indices are used to identify the JMS Message that is stored in the LV-Cache for a particular LV-Cache Key.
Values
This parameter accepts boolean values - 'true' or 'false'. Default value is 'false', which means that the LV-Cache indices are loaded into the Server's memory when the first JMS Message arrives on the Topic.
Example
This parameter may be used to potentially decrease the time taken for the first 'Publish' call. In case the LV-Cache has thousands of messages, it takes several milliseconds to load this data into the Server's memory.
Dependencies
This parameter is only used if EnableLastValueCache on the JMS Topic is set to 'true'.
IgnoreNullLVCKey
This parameter determines whether to ignore the message sent to a JMS Topic on which LV-Caching is enabled with cache-key property not set. If set to false, an exception is thrown if the message has no cache-key set.ValuesThis parameter accepts boolean values - 'true' or 'false'. Default value is 'true', which means that when the JMS Message arrives on the Topic with no LV-Cache key set, it is ignored.
Example
This flag may be used to potentially stop publishing messages from a normal Publisher which doesn't send messages supposed to the Topic on which Last Value Cache is enabled.
Dependencies
This parameter is only used if EnableLastValueCache on the JMS Topic is set to 'true'.
FlushLVCDataAtStartup
This parameter determines whether to clean-up LVC data stores at the time of start-up of the FioranoMQ Server.
Values
This parameter accepts boolean values - 'true' or 'false'. Default value is 'false', which means that when the messages stored in the LV-Cache are not deleted and any new Subscribers will get those messages.
Example
This flag may be used to potentially start the Last Value Caching afresh and to flush the data stored in the Topics' LV-Cache after the Server's each run.
Dependencies
This parameter is only used if EnableLastValueCache on the JMS Topic is set to 'true'.