About __Java Message Service__: [https://en.wikipedia.org/wiki/Jakarta_Messaging]\\
\\
__Supported protocol__: AMQPS ([https://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol])\\
\\
!!1. Solace JMS AMQPS Integration\\
\\
About Solace JMS : [https://docs.solace.com/API/AMQP/Why-AMQP.htm]\\
\\
Get the __AMQPS URL__, __user name__, and __password__ for JMSTask's __JNDI config__ from the __Solace Broker Management__.\\
\\
[JMS (Java Message Service)/jms_amqp.png]\\
\\
!!2. JMSTask configuration:\\

!2.1 JNDI config: Variable replacement is supported.\\
About Java Naming and Directory Interface: [https://en.wikipedia.org/wiki/Java_Naming_and_Directory_Interface]\\
It stores the connection settings and required destinations (Topic and Queue).\\
\\
[JMS (Java Message Service)/jms_jndi_config.png]\\
\\
Configuration example:\\
{{{
# Context Factory
java.naming.factory.initial=org.apache.qpid.jms.jndi.JmsInitialContextFactory

# Secured AMQP Host 
connectionfactory.qpidConnectionfactory=amqps://mr-connection-XXXXd:56XX

#User name and password
username=solace-XXXX
password=rsaXXXXXX
#Topic name
topic.my_topic_name=my_topic_name
queue.my_queue=my_queue
}}}\\
\\
!2.2 Producer Mode:\\
\\
Sends messages to the given destination topic or queue.\\
\\
[JMS (Java Message Service)/JMSTask.png]\\
\\
__1. Destination name__: Name of the __Topic__ or __Queue__ configured on __JNDI config__. Variable replacement is supported ([CrushTaskVariables]).\\
\\
__2. Advanced Options__:\\
\\
__ Persistent:__ Delivery mode Persistent means the message is not lost when a messaging provider goes down for any reason and comes up again.\\
__ Time to live:__ When the message is published, the specified time to live is added to the current time to give the expiration time\\
__ Priority:__ There are 10 priority levels, 0 to 9. As per the JMS standard, a message with priority 0-4 is the normal priority, and 5-9 is considered an expedited priority.\\
\\
__3. Message Type: Custom Message__: Send a custom message to the destination as text or binary. Variable replacement is also supported. You can loop through incoming files and send as many custom messages with file-related pieces of information like name, path, or URL.\\
\\
__4. Message Type: Send files__: It sends the file content in binary mode. Max file size allowed: __10 MB__.\\
\\
!2.3 Consumer Mode:\\
\\
Receive messages from the given destination topic or queue.\\
\\
[JMS (Java Message Service)/jms_consumer_mode.png]\\
__1. Destination name__: Name of the __Topic__ or __Queue__ configured on __JNDI config__. Variable replacement is supported ([CrushTaskVariables]).\\
\\
__2. Message-related settings__: Set the maximum number of consumed messages, and control the read timeout of message reading.\\
\\
__3. Save message to the given location__: Provide the file name. Variable replacement is supported.
\\