JmsStream has both a command-line executable and a Graphical User Interface (GUI) wrapper that records and replays JMS messages from queues or topics. It can capture and send text messages, map message, and binary messages. It can capture, but not sent object messages. The GUI application also provides the ability to safely edit or create a JmsStream message capture file.
JmsStream is similar in functionality to tools like RvStream, RvFlow, and RvScript, except it is created specifically for JMS. JmsStream also has functions for performance testing, and is compatible with most JMS servers. It is not intended as a replacement for JMS message visualization tools like TIBMon or Hermes.
JmsStream provides the following kind of functionality:
- Capturing JMS messages on selected queues/topics, using TCP or SSL connections.
- Capture and save very large messages to ZIP compressed files.
- Re-sending of captured messages, optionally with different destinations, reply destinations, and modified message data.
- Re-sending messages in request/reply mode to a service and capturing the reply either synchronously or asynchronously.
- Re-sending messages for debugging purposes.
- Performance testing of JMS Servers, request/reply services, or message consumers using TCP or SSL messages.
- Create JMS or XA transactional sessions for testing or message capturing/publication from a file.
- Compatible with JBoss Transaction Manager for testing XA behavior and connections.
- Security Testing of JNDI and destinations.
- Testing JMS Server setup.
JmsStream 2.7 is written in Java and compiled using JDK 1.8, but is backwards compatible with JRE version 1.5. Thus a Java run-time environment is needed and this should be at least version 1.5.0 or greater. All of the examples assume that the Java JRE bin directory is in the system path. However, the Windows EXE version of JmsStream and JmsStreamGUI do not require a JRE installation on the machine.
JmsStream 2.7 supports TIBCO EMS 4.x - 8.x, Apache ActiveMQ 5, and JBoss HornetQ 2, but it should work with any JMS compliant server. JmsStream install file includes the TIBCO EMS 8.2, Apache ActiveMQ 5.5.0, and JBoss HornetQ 2.2.5 client libraries. Therefore no EMS, ActiveMQ, or HornetQ client installation is needed. In order to use other JMS servers you must install and include their client JARs in the CLASSPATH.
To use the XA features of JmsStream you must download JBoss Transaction Manager 4.11.0 from:
http://www.jboss.org/jbosstm/downloads/4.11.0.Final/binary/jbossts-jta-4.11.0.Final.zip
JmsStream uses 7Zip to compress the installation files. 7Zip files are about half the size of standard ZIP files. 7Zip is open-source and can be downloaded from http://www.7zip.org.
Installation of JmsStream is basically a matter of unzipping JmsStream.7z
file to a local directory. This 7Zip file includes all classes required to run JmsStream, except for the JBoss Transaction Manager 4.11.0 libraries and the Java JRE. To run JmsStream, cd
to the directory containing JmsStream.jar
and type java -jar JmsStream.jar -?
.
The GUI shell for JmsStream (JmsStreamGUI) requires the JmsStream.jar
to be in the same directory as JmsStreamGUI.jar
and can be started by typing java -jar JmsStreamGUI.jar
with no command line options.
JmsStreamEXE.7z
contains the Windows EXE versions of JmsStream, JmsStream.exe
and JmsStreamGUI.exe
. JmsStreamEXE.7z
also contains the JRE necessary to run the EXEs, and it does not require a Java installation. Just unzip JmsStreamEXE.7z
file to a local directory and run the application.
To enable the XA capabilities of JmsStream download jbossts-jta-4.11.0.Final.zip
from the JBoss web site, and copy the following JAR files from the ZIP file to the ./lib/jbossts
directory of the JmsStream root:
- JBOSSTS_4_11_0_Final\lib\jbossjta.jar
- JBOSSTS_4_11_0_Final\lib\ext\commons-logging.jar
- JBOSSTS_4_11_0_Final\lib\ext\log4j.jar
For example, if your JmsStream root is C:\tibco\jmsstream
. Then you will put all of these files in C:\tibco\jmsstream\lib\jbossts
directory. The other files in the jbossts-jta-4.11.0.Final.zip
are not needed by JmsStream.
See Running JmsStream for more details.
JmsStream was developed over a ten year period with several people contributing bits and pieces. It was originally ported from C code, and evolved from a quick and dirty command line application for replaying message into a more sophisticated JMS testing tool. No attempt was made to redesign or modularize the code. However, through the years JmsStream's code has been optimized for performance and user functionality.