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 Studio.

For information on how to configure the FioranoMQ Server in Offline mode, refer to Chapter 3 Offline Configuration Through Profile Manager and for Online Configuration (through the Web Management Console), refer to Chapter 30 FioranoMQ Web Management Console of FioranoMQ Handbook.

Note: FioranoMQ 9.1.0 onwards includes the Destination Level Configuration support. For more on this, please refer to section 29.1 Support for Destination Level Configuration in the FioranoMQ Handbook.

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 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 integermay 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. Anypositive 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 allow 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 over flow 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.

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. Dta 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 andthe 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'.

Adaptavist ThemeBuilder EngineAtlassian Confluence