Table of Contents
Overview
The Java Message Service (JMS) is a messaging standard that allows application components based on the Java Platform Enterprise Edition (Java EE) to create, send, receive, and read messages. It enables distributed communication that is loosely coupled, reliable, and asynchronous.
As per FIXEdge Java, JMS endpoints allow you to establish a connection with JMS - message providers and receive/send data from/to them. JMS endpoints can work with queues and topics. Each endpoint has a unique name. A Each JMS endpoint is routing routes messages only in one way: it can be configured either producer a Producer or consumera Consumer.
During FIXEdge Java server start-up, it initiates endpoints that are defined in the jms-adaptor.properties configuration file.
The list of active endpoints is defined by the jms.adaptor.ClientNames ClientNames property. If If the jms.adaptor.ClientNames property is specified with an empty value, then none of the clients are active.
To add a new JMS endpoint to , the following steps should be taken:
- In the jms-adaptor.properties
...
- Define the JMS connection configuration. JMS connection properties have the configuration define the JMS endpoint configuration and specify its name in the jms.adaptor.Connection.ClientNames property.
- In the jms-adaptor.properties configuration file define the JMS connection configuration. JMS connection properties have the jms.adaptor.Connection.[ConnectionName] prefix, where where the [ConnectionName] is a unique identifier/name of this connection and it is used to link it with JMS endpoint configuration. The . Each JMS connection has a set of predefined properties (specified in the table below) but available configuration properties but it can be extended with custom ones (see the samples below).
- Define the JMS endpoint configuration and add its name to the
jms.adaptor.ClientNames
list.
Configuration properties
...
- .
Configuration properties Anchor Configuration properties Configuration properties
Configuration properties | |
Configuration properties |
Info |
---|
It is possible to use environment variables in configuration. For example, jms.adaptor.Connection.[ConnectionName].Password = ${CONNECTION_PASSWORD}, where CONNECTION_PASSWORD is the name of the environment variable. |
The JMS adaptor should be configured using the following properties:
Property Name | Description | Required | Default Value |
---|
Adapter parameters | |||
---|---|---|---|
jms.adaptor.ClientNames |
This property defines the comma-delimited list of JMS endpoints. |
Each listed client should be |
configured in a separate section. | Y | - |
jms.adaptor.ConnectionNames |
This property defines the comma-delimited list of JMS TA connections. |
Each listed connection should be |
configured in a separate section. | Y |
- | |||
Connection parameters | |||
---|---|---|---|
jms.adaptor.Connection.[ConnectionName]. |
JNDI option. The fully qualified class name of the factory class that will create the initial context. An initial context is the starting point for naming operations.
jms.adaptor.Connection.[ConnectionName].ProviderURI
ProviderURI | This property defines the URI of the JMS provider to connect to and the protocol to use, e.g. TCP/IP. Also, the configuration information can be encoded in the URI. | Y | - |
jms.adaptor.Connection.[ConnectionName].User |
This property defines the name of the user. | Y | - |
jms.adaptor.Connection.[ConnectionName].Password |
jms.adaptor.Connection.[ConnectionName].ConnectionFactory
This property defines the passport of the user. | Y | - |
jms.adaptor.Connection.[ConnectionName].Reconnect |
This property enables/disables the |
reconnection procedure for |
JMS brokers that don't support the failover mechanism. Valid values: true | false | N | false |
jms.adaptor.Connection.[ConnectionName].ReconnectTries |
This property defines the number of reconnect tries |
. Valid values: int | -1 |
for an infinite number of attempts | N | 3 |
jms.adaptor.Connection.[ConnectionName].ReconnectInterval |
This property defines the fixed interval in milliseconds between reconnection attempts. Valid values: int | N | 2000 |
jms.adaptor. |
Connection.[ |
ConnectionName]. |
ConnectionNames
enumeration and has all required parameters.jms.adaptor.Client.[ClientName].StorageDir
InitialContextFactory | This property is used for JNDI and defines the fully qualified class name of the factory that will create the initial context. An initial context is the starting point for naming operations. | Y (if the JNDI mechanism is used) | - |
jms.adaptor.Connection.[ConnectionName].ConnectionFactory | This property defines the connection factory object name in the JNDI objects store. | Y (if the JNDI mechanism is used) | - |
Client parameters | |||
---|---|---|---|
jms.adaptor.Client.[ClientName]. |
Session type:
- Producer - the session is a message producer
- Consumer - the session is a message consumer
ConnectionName | This property defines the name of the primary connection used by the client. The specified connection must be registered in the jms.adaptor.ConnectionNames property and all its required parameters must be specified. | Y | - |
jms.adaptor.Client.[ClientName]. |
Session messaging mode:
Queue - Point-To-Point. Each message is addressed to a specific queue, and receiving clients extract messages from the queue(s) established to hold their messages. Queues retain all messages sent to them until the messages are consumed or until the messages expire.
Topic - Publish/Subscribe. In a pub/sub product or application, clients address messages to a topic. Publishers and subscribers are generally anonymous and may dynamically publish or subscribe to the content hierarchy. The system takes care of the distributing messages arriving from a topic’s multiple publishers to its multiple subscribers. Topics retain messages only as long as it takes to distribute them to current subscribers.StorageDir | This property defines the path to the directory where the persistence file is stored in case of connection problems. | Y (if the Persist delivery mode is selected) | - |
jms.adaptor.Client.[ClientName]. |
SessionType | This property defines the session role. Valid values: Producer | Consumer | Y | - |
jms.adaptor.Client.[ClientName]. |
Specifies whether the sent messages are lost if the JMS provider fails.
Persist - instructs the JMS provider to take extra care to ensure that a message is not lost in transit in case of JMS provider failure. A message sent with this delivery mode is logged to a stable storage when it is sent.
NoPersist - does not require the JMS provider to store the message or otherwise guarantee that it is not lost if the provider fails.
NOTE: used only for Producer sessions.
MessagingMode | This property defines the session messaging mode. Valid values: Queue | Topic When the 'Queue' value is specified then each message is addressed/sent to a specific queue, and consuming clients extract them from the queue(s). Queues retain messages until they are consumed or expired. When the 'Topic' value is specified then each message is addressed/sent to a topic. Publishers and subscribers are generally anonymous and can dynamically publish or subscribe to the content hierarchy. The system distributes messages arriving from a topic to its subscribers. Topics retain messages until they are distributed to current subscribers. | Y | - |
jms.adaptor.Client.[ClientName]. |
DestinationURI | This property specifies the URI of the session destination - the name of the queue or topic. Valid values: string | Y | - | |||
jms.adaptor.Client.[ClientName].DeliveryMode
|
Defines a mode in which the JMS session will acknowledge the messages that it receives and dispatches.
Auto - With this acknowledgment mode, the session automatically acknowledges a client's receipt of a message either when the session has successfully returned from a call to receive or when the message listener the session has called to process the message successfully returns.
Client - With this acknowledgment mode, the client acknowledges a consumed message by calling the message's acknowledge method. Acknowledging a consumed message acknowledges all messages that the session has consumed. When the client acknowledgment mode is used, a client may build up a large number of unacknowledged messages while attempting to process them.
DupsOk - This acknowledgment mode instructs the session to lazily acknowledge the delivery of messages. This is likely to result in the delivery of some duplicate messages if the JMS provider fails, so it should only be used by consumers that can tolerate duplicate messages. The use of this mode can reduce session overhead by minimizing the work the session does to prevent duplicates.
| This property defines whether sent messages will be lost in case of JMS provider failure. Used for Producers only. Valid values: Persist | NoPersist When the 'Persist' value is specified each sent message is logged to a safe and stable storage to recover in case of JMS provider failure. When the 'NoPersist' value is specified each sent message is not logged so it may be lost in case of JMS provider failure. | Y | - | ||
jms.adaptor.JMSTA.Client.[ClientName]. |
JMS Message type used for the session.
Bytes - A stream of interpreted bytes. This message type is for literally encoding a body to match the existing message format.
Text - Data is stored as a string. This message type is useful for exchanging simple text messages and for more complex character data, such as XML documents.
Custom - The ability to use your own message type. This message type is useful for adaptation to already existing systems. For this message type, the jms.adaptor.Client.[ClientName].CustomMessageType property is required.
TimeToLive | This property defines message expiration time in milliseconds. The time of message expiration is defined by the sum of the jms.adaptor.JMSTA.Client.[ClientName].TimeToLive property value and the GMT timestamp of message sending. Valid values: int | 0 for an infinite TTL | Y | 3000 |
jms.adaptor.JMSTA.Client.[ClientName]. |
Class of a custom message type implementation. This should be the implementation of one of the interfaces:
- com.epam.fixengine.jms.client.consumer.IFromMessageConverter
- com.epam.fixengine.jms.client.consumer.IToMessageConverter
- com.epam.fe.converter.SimpleTextMessageWithHeaderConverter
NOTE: used only for Custom message type
jms.adaptor.Client.[ClientName].Transacted
Sending/consuming of messages in the session is transacted.
true - transacted.
false - not transacted. The value is used by default.
jms.adaptor.Client.[ClientName].TransactionBatchSize
Max number of messages for one transaction. Takes the available number of messages from the queue but not more than that specified in this property.
NOTE: used only if transacted is enabled.
jms.adaptor.Client.[ClientName].QueueSize
jms.adaptor.Client.[ClientName].QueuePersistent
Store messages in the file until they are committed which allows restoring and sending messages after a sudden application shutdown.
true – to save messages in the file storage (persistent queue) with parallel saving in memory.
false – to save messages in the in-memory queue. This approach is faster but less safe since some messages may be lost after restart.
Info |
---|
'QueuePersistent = true' is used to keep queued messages only in file storage, without parallel storing in memory since the JMS TA 1.3.10 version. |
SessionAckMode | This property defines a mode in which the JMS session will acknowledge the receiving and sending messages. Valid values: Auto | Client | DupsOk When the 'Auto' value is specified the session automatically acknowledges the receipt of the message when the session has successfully returned from a call to receive or when the message listener's call to process the message successfully returns. When the 'Client' value is specified the client acknowledges the receipt of the message by calling the message's acknowledge method. When the 'Client' acknowledgment mode is used the client may accumulate a large number of unacknowledged messages while attempting to process them. When the 'DupsOk' value is specified the session 'lazily' acknowledges the receipt of the message which leads to duplicate delivery in case of JMS provider failure. This mode must be used only by Consumer sessions which can tolerate duplicated messages. | Y | - | ||||
jms.adaptor.JMSTA.Client.[ClientName].MessageType
| This property defines the JMS message type for the session. Valid values: Bytes | Text | Custom When the 'Bytes' value is specified the session operates by the messages in the form of interpreted bytes. This message type is used for encoding the message body in order to match the existing format. When the 'Text' value is specified the session operates by messages in a String. This message type is used for handling more complex character data, such as XML documents. When the 'Custom' value is specified the session operates by messages with the custom message type. Custom message types may be used to adapt to already existing systems. If the custom message type is used the jms.adaptor.Client.[ClientName] |
After reaching this size, the endpoint waits when the queue will be empty to truncate the file. File size in Mbytes.
NOTE: used only for the persistent queue.
.CustomMessageType property is required. | Y | - | ||
jms.adaptor.Client.[ClientName].CustomMessageType
|
After reaching this size, the endpoint truncates the file and overwrites the messages that are queued. File size in Mbytes.
NOTE: used only for the persistent queue.
|
Durable topic subscriptions allow receiving messages published while the subscriber is not active. Durable subscriptions offer the reliability of queues to the publish/subscribe message domain.
See more here.
true - Subscription is durable.
false - Subscription is not durable.
NOTE:
- used only for Consumer sessions.
- checks that Producer sends messages using the Persistent delivery mode.
| This property defines the class of a custom message type implementation. Implementation of one of the following interfaces is valid:
| Y (if message type is Custom) | - | ||
jms.adaptor.Client.[ClientName]. |
Transacted
|
A number of JMS connections.
The endpoint will open a given amount of connections to the JMS server for the given session to send simultaneously.
NOTE: If a number of connections is greater than 1, there is no guarantee that messages will be placed into JMS in the same order they were received by the endpoint.
| This property enables/disables sending or receiving session messages in transacted mode. Valid values: true | false | N | false | ||
jms.adaptor.Client.[ClientName]. |
TransactionBatchSize | This property defines the maximum number of |
messages per |
NOTE: If the number of threads per connection is greater than 1, there is no guaranty that messages will be placed into JMS in the same order they were received by the adapter.
transaction. An available number of messages less than the TransactionBatchSize valuewill be sent/received from the incoming/outgoing queue. Used only when Transacted mode is enabled. Valid values: int | N | 20 |
jms.adaptor.Client.[ClientName]. |
When enabled, the Password (tag 554) value in the Logon(35=A) message will be substituted with a mask "*****".
QueueSize | This property defines the maximum number of messages in the outgoing queue. Used for Producers only. Valid values: int | N | 100 |
jms.adaptor.Client.[ClientName]. |
QueuePersistent
|
|
jms.adaptor.Client.[ClientName].scheduleTimeZone
NOTE: All changes in the properties file are applied only after FixEdge Java server restart.
NOTE: All defined JMS endpoints are started automatically during the FIXEdge Java server initialization by default if there is a defined schedule for them (starting from FEJ 1.8.0). Schedule may be defined by startTime/stopTime
properties or within a separate schedule configuration (Refer to the Scheduler section for more details).
NOTE: It is possible to use environment variables in configuration. Example: jms.adaptor.Connection.[ConnectionName].Password = ${CONNECTION_PASSWORD}, where CONNECTION_PASSWORD is the name of the environment variable.
Sample Configuration
Sample configuration for ActiveMQ vendor
Make sure that activemq-client.jar is present in the /lib directory.
Typical JMS endpoint parameters in jms-adaptor.properties:
...
| This property defines whether messages will be stored in the file until they are committed. This approach allows restoring and sending messages after an unexpected application shutdown. Valid values: true | false When the 'true' value is specified messages will be saved in the file storage (persistent queue) with parallel saving in memory. When the 'false' value is specified messages will be saved in the in-memory queue. This approach is faster but less safe since some messages may be lost after restart.
| N | true | ||||||
jms.adaptor.Client.[ClientName].QueueNormalFileSize | This property defines the normal persistent file size in MBytes. After reaching the specified queue size, the endpoint waits until the queue is empty to truncate the file. Used only when Persistent queue is enabled. Valid values: int | N | 10 | ||||||
jms.adaptor.Client.[ClientName].QueueMaxFileSize
| This property defines the maximum persistent file size in MBytes. After reaching the specified queue size, the endpoint truncates the file and overwrites the messages that are queued. Used only when Persistent queue is enabled. Valid values: int | N | 50 | ||||||
jms.adaptor.Client.[ClientName].StorageFlushMode | This property defines whether the forced flush must be performed after each write operation. Used for Producers only. Valid values: Force | Auto | N | Auto | ||||||
jms.adaptor.Client.[ClientName].PublishTimeout | This property defines a timeout interval in milliseconds to put the message in the outgoing queue if it is full. Used for Producers only. If publishing to the queue fails after PublishTimeout milliseconds (the queue is still full) the exception will be thrown and the message won't be added to the queue. Valid values: int | -1 for automated publishing | N | 2000 | ||||||
jms.adaptor.Client.[ClientName].DurableSubscription
| This property enables durable topic subscriptions which allow receiving messages published while the subscriber is not active. Used for Consumers only. Durable subscriptions offer the reliability of queues to publish/subscribe to the message domain. Valid values: true | false | N | false | ||||||
jms.adaptor.Client.[ClientName].DurableSubscriptionName | This property defines the name/identifier of the durable subscription. Valid values: string | Y (if durable subscription is enabled) | - | ||||||
jms.adaptor.Client.[ClientName].ConnectionsCount | This property defines the number of connections to the JMS server that will be opened by JMS. The selected session will be able to send messages simultaneously. If the number of connections is greater than 1, there is no guarantee that messages will be delivered to JMS in the same order as they were sent by the JMS adapter. Valid values: int | N | 1 | ||||||
jms.adaptor.Client.[ClientName].ThreadsPerConnection | This property defines the number of threads per JMS connection. The endpoint will open a given amount of JMS sessions for each connection to send messages simultaneously. If the number of threads per connection is greater than 1, there is no guarantee that messages will be delivered to JMS in the same order as they were sent by the JMS adapter. Valid values: int | N | 1 | ||||||
jms.adaptor.Client.[ClientName].maskPasswordsInStorages | This property provides the ability to enable/disable user password obfuscating. When the 'true' value is specified the Password(554) value in the Logon(35=A) message will be masked with "*****". Valid values: true | false | N | true | ||||||
jms.adaptor.Client.[ClientName].AllowRejectMessages | This property defines whether unsent messages will be sent back to a user's application on the JMS Producer disconnect. Used for Producers only. When the 'true' value is specified JMS rejects messages if unable to send to the MQ or an error occured. Valid values: true | false | N | false | ||||||
jms.adaptor.Client.[ClientName].AllowMeasureIncomingTimestamp | This property defines whether incoming timestamps will be recorded to calculate the processing latency of the JMS client displayed on FIXICC H2 WebUI. Valid values: true | false | N | true | ||||||
jms.adaptor.Client.[ClientName].startOnload |
This property defines whether the JMS endpoint will be started during FIXEdge Java server initialization. Valid values: true | false | N | true | ||||||
jms.adaptor.Client.[ClientName].startTime | This property defines the JMS endpoint start time. Valid values: CRON expressions | N | NULL | ||||||
jms.adaptor.Client.[ClientName].stopTime | This property defines the JMS endpoint stop time. Valid values: CRON expressions | N | NULL | ||||||
jms.adaptor.Client.[ClientName].scheduleTimeZone | This property defines the timezone for the startTime and stopTime.
| N | NULL |
Info |
---|
All changes in the jms-adaptor.properties configuration file will be applied only after the FIXEdge Java server restart. |
Sample Configuration
ActiveMQ Connection
Info |
---|
The particular activemq-client.jar file must be present in the /lib directory. |
General JMS Consumer endpoint parameters in the jms-adaptor.properties configuration file:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
jms.adaptor.ConnectionNames =LocalActiveMQConnection jms.adaptor.ClientNames = ActiveMQProducer, ActiveMQConsumer # ActiveMQ Connection definition jms.adaptor.Connection.LocalActiveMQConnection.InitialContextFactory = org.apache.activemq.jndi.ActiveMQInitialContextFactory jms.adaptor.Connection.LocalActiveMQConnection.ProviderURI = tcp://localhost:61616 jms.adaptor.Connection.LocalActiveMQConnection.User = jms.adaptor.Connection.LocalActiveMQConnection.Password = jms.adaptor.Connection.LocalActiveMQConnection.ConnectionFactory = queueConnectionFactory jms.adaptor.Connection.LocalActiveMQConnection.Reconnect = true jms.adaptor.Connection.LocalActiveMQConnection.ReconnectTries = 3 jms.adaptor.Connection.LocalActiveMQConnection.ReconnectInterval = 500 # ActiveMQ Producer definition jms.adaptor.Client.ActiveMQProducer.ConnectionName = LocalActiveMQConnection jms.adaptor.Client.ActiveMQProducer.StorageDir = ./logs jms.adaptor.Client.ActiveMQProducer.SessionType = Producer jms.adaptor.Client.ActiveMQProducer.MessagingMode = Queue jms.adaptor.Client.ActiveMQProducer.DestinationURI = MyQueue jms.adaptor.Client.ActiveMQProducer.DeliveryMode = NoPersist jms.adaptor.Client.ActiveMQProducer.TimeToLive = 100000 jms.adaptor.Client.ActiveMQProducer.SessionAckMode = Auto jms.adaptor.Client.ActiveMQProducer.MessageType = Text jms.adaptor.Client.ActiveMQProducer.Transacted = true jms.adaptor.Client.ActiveMQProducer.DurableSubscription = false jms.adaptor.Client.ActiveMQProducer.DurableSubscriptionName = DurableTest # ActiveMQ Consumer definition jms.adaptor.Client.ActiveMQConsumer.ConnectionName = LocalActiveMQConnection jms.adaptor.Client.ActiveMQConsumer.StorageDir = ./logs jms.adaptor.Client.ActiveMQConsumer.SessionType = Consumer jms.adaptor.Client.ActiveMQConsumer.MessagingMode = Queue jms.adaptor.Client.ActiveMQConsumer.DestinationURI = MyQueue jms.adaptor.Client.ActiveMQConsumer.DeliveryMode = NoPersist jms.adaptor.Client.ActiveMQConsumer.TimeToLive = 100000 jms.adaptor.Client.ActiveMQConsumer.SessionAckMode = Auto jms.adaptor.Client.ActiveMQConsumer.MessageType = Text jms.adaptor.Client.ActiveMQConsumer.Transacted = false jms.adaptor.Client.ActiveMQConsumer.DurableSubscription = false jms.adaptor.Client.ActiveMQConsumer.DurableSubscriptionName = DurableTest |
...
Info |
---|
...
The jms.adaptor.Connection.LocalActiveMQConnection. |
...
ProviderURI property must be set to the 'tcp://localhost |
...
:61616' whichis the host:port of Apache ActiveMQ Message Broker. |
...
TIBCO EMS
...
Connection
Info |
---|
The particular tibjms.jarTIBCO JMS client library |
...
must be copied from the TIBCO EMS installation /lib directory. |
Typical General JMS consumer Consumer endpoint parameters in thejms-adaptor.properties configuration file:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
jms.adaptor.ConnectionNames =TibcoJMSConnection jms.adaptor.ClientNames = TibcoConsumer # JMS Connection definition jms.adaptor.Connection.TibcoJMSConnection.InitialContextFactory = com.tibco.tibjms.naming.TibjmsInitialContextFactory jms.adaptor.Connection.TibcoJMSConnection.ProviderURI = tcp://localhost:7222 jms.adaptor.Connection.TibcoJMSConnection.User =dev jms.adaptor.Connection.TibcoJMSConnection.Password =dev jms.adaptor.Connection.TibcoJMSConnection.ConnectionFactory = TopicConnectionFactory jms.adaptor.Connection.TibcoJMSConnection.ReconnectTries = 2000000 jms.adaptor.Connection.TibcoJMSConnection.ReconnectInterval = 2000 jms.adaptor.Connection.TibcoJMSConnection.Reconnect = true # Topic Consumer client jms.adaptor.Client.TibcoConsumer.ConnectionName = TibcoJMSConnection jms.adaptor.Client.TibcoConsumer.SessionType = Consumer jms.adaptor.Client.TibcoConsumer.MessagingMode = Topic jms.adaptor.Client.TibcoConsumer.DestinationURI = fixedge.deals jms.adaptor.Client.TibcoConsumer.DeliveryMode = NoPersist jms.adaptor.Client.TibcoConsumer.TimeToLive = 100000 jms.adaptor.Client.TibcoConsumer.SessionAckMode = Auto jms.adaptor.Client.TibcoConsumer.MessageType = Text jms.adaptor.Client.TibcoConsumer.StorageDir = ./logs jms.adaptor.Client.TibcoConsumer.DurableSubscription = true jms.adaptor.Client.TibcoConsumer.DurableSubscriptionName = fixedge.deals |
...
RedHat AMQ
...
Connection
Info |
---|
The particular RHEL JMS Client |
...
library must be copied to the /lib directory |
...
. |
...
General JMS
...
Consumer endpoint parameters in thejms-adaptor.properties configuration file:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
#JMS Connection definition jms.adaptor.ConnectionNames = Connection1 jms.adaptor.Connection.Connection1.InitialContextFactory = org.apache.qpid.jms.jndi.JmsInitialContextFactory jms.adaptor.Connection.Connection1.ConnectionFactory = myFactoryLookup jms.adaptor.Connection.Connection1.ConnectionFactory.myFactoryLookup = amqp://localhost:5672 jms.adaptor.Connection.Connection1.User = centos jms.adaptor.Connection.Connection1.Password = centos jms.adaptor.ClientNames = ProducerSession, ConsumerSession # Poducer client jms.adaptor.Client.ProducerSession.ConnectionName = Connection1 jms.adaptor.Client.ProducerSession.StorageDir = ./logs jms.adaptor.Client.ProducerSession.SessionType = Producer jms.adaptor.Client.ProducerSession.MessagingMode = Queue jms.adaptor.Client.ProducerSession.DestinationURI = queue1 jms.adaptor.Client.ProducerSession.DeliveryMode = NoPersist jms.adaptor.Client.ProducerSession.TimeToLive = 100000 jms.adaptor.Client.ProducerSession.SessionAckMode = Auto jms.adaptor.Client.ProducerSession.MessageType = Text # Consumer client jms.adaptor.Client.ConsumerSession.ConnectionName = Connection1 jms.adaptor.Client.ConsumerSession.StorageDir = ./logs jms.adaptor.Client.ConsumerSession.SessionType = Consumer jms.adaptor.Client.ConsumerSession.MessagingMode = Queue jms.adaptor.Client.ConsumerSession.DestinationURI = queue2 jms.adaptor.Client.ConsumerSession.DeliveryMode = NoPersist jms.adaptor.Client.ConsumerSession.TimeToLive = 100000 jms.adaptor.Client.ConsumerSession.SessionAckMode = Auto jms.adaptor.Client.ConsumerSession.MessageType = Text |