JmsStream is a command-line utility 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. There is also a GUI version (JmsStreamGUI.jar) that raps all the functionality of the command-line application and 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.6 is written in Java and compiled using jdk1.6.0_19, 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.6 supports TIBCO EMS 4.x, TIBCO EMS 5.x, Apache ActiveMQ 5, and JBoss HornetQ 2, but it should work with any JMS compliant server. JmsStream install file includes the TIBCO EMS 5.1.4, Apache ActiveMQ 5.3.1, and JBoss HornetQ 2.0.0 client libraries. Therefore an EMS, ActiveMQ, or HornetQ client installation is not 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.9.0 GA from:
http://www.jboss.org/downloading/?projectId=jbosstm&url=/jbosstm/downloads/4.9.0 .GA/binary/jbossts-jta-4.9.0.GA.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 basically a matter of unzipping JmsStream.7z file to a local directory. This 7Zip file included all classes required to run JmsStream, except for the JBoss Transaction Manager 4.9.0 GA 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.9.0.GA.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_9_0_GA\lib\jbossjta.jar
JBOSSTS_4_9_0_GA\lib\ext\commons-logging-1.1.jar
JBOSSTS_4_9_0_GA\lib\ext\jcommon-1.0.5.jar
JBOSSTS_4_9_0_GA\lib\ext\log4j-1.2.14.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.9.0.GA.zip are not needed by JmsStream.
Version 2.6.0
Added the ability to create and use a local file based JNDI.
Added built-in support for Apache ActiveMQ 5.
Added built-in support for JBoss HornetQ 2.
Fixed issue with "Display Command Line Arguments" and displaying -stopafter argument.
Fixed issue with "Display Command Line Arguments" and displaying incompatible arguments.
Fixed a bug that prevented publishing of compressed messages.
Fixed an issue where the -showconfig would display the configuration but continued to execute. It now stops after displaying the configuration as expected.
Fixed an issue with -getbodylength. The bug was intorduced in 2.5.0, it now gives the correct length.
Version 2.5.2
Fixed issue preventing request/reply messages in JmsStreamGUI.
Fixed an issue preventing topic messages. This bug was introduced in version 2.5.1. It is now fixed.
Version 2.5.1
Fixed issues preventing the sending and displaying of UTF-8 characters.
Version 2.5.0
Changed the embedded EMS client libraries from version 5.0 to version 5.1.4
Upgraded to JBoss Transaction Manager 4.9.0 GA libraries. (You must copy the libraries yourself. See docs.)
Changed the default save file extension to .jmss
Changed SSL screen to allow SSL connects to third-party JMS Servers.
Compiled with JDK 1.6.0_18 but still compatible with JRE 1.5.
Added the ability to read the JmsStream parameters from a Java configuration file instead of putting them on the command line.
Added the ability to override the sending and/or listening destinations for request/reply messages.
Added ability to change the default JMS client libraries to a different JMS Server.
Added ability for SSL connections to third-party JMS Servers.
Added ability to add custom JNDI settings.
Added SLF4j classes to distribution.
Added a JMS message editor to JmsStreamGUI.
Added a screen to add custom JNDI settings.
Fixed a bug in the Topic request/reply where the reply could only be a queue. It is now a Topic as expected.
Fixed a bug in writing the origination times in the original request message for request/replies.
Fixed a bug that prevented publishing for ZIP save files.
Fixed a bug that displayed erroneous "Stop..." messages for request/replies.
Fixed the request/reply bug in JmsStream GUI that prevented receiving the reply.
Fixed a bug that prevented stopping of publication
Version 2.4.1
Add a feature to the listener that will exit the application after receiving x number of messages.
Removed JBoss Transaction Manager 4.3.2 SP7 libraries due to possible legal issues. (You must now copy the libraries yourself. See docs.)
Removed embedded JARs from inside the EXE. Now the JARs are in the "./lib" directory.
Version 2.4.0
Added support for local XA Transactions through JBossTS transaction manager.
Added a simulated XA Transactions without using a transaction manager for performance testing.
Includes the EMS 5.0 client libraries.
Includes the JBoss Transaction Manager 4.3.2 SP7 libraries.
No longer embed the third party JAR file inside the JmsStream JARs. They are now located in subdirectory and linked by the JAR manifest.
JmsStream.exe has all necessary JARs embedded inside the EXE.
Added licenses for the JBossTS transaction manager to comply with its GNU Lesser General Public License v. 2.1.
For some reason the file "JmsStreamEXE.z01" downloads as "JmsStreamEXE.z01.zip" in some circumstances.
I think some zippers can see through the confusion but some others (default windows) do not.
If the unpacking process fails with no explanation, just rename the file by removing the ending ".zip" from the z01 file. Try again, sorted !
trying to configure request reply with asynchronour reply...dont see an option for sending the reply on a different queue ....cant we listen on say "REQUEST.QUEUE" and reply on "REPLY.QUEUE" ?
Hello Kevin
Is it possible for you share the source code of JmsStream? You can drop me an email at shrimali.amit@gmail.com
Regards
Amit
Hi,
I have tried to run this version (2.5) using a 1.5 JRE on linux, and it fails with...
Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file
I checked the class version number, and it reports 50, which will only load in a 1.6 JVM.
Can you recompile all the classes using -target 1.5 -source 1.5 and upload again?
Thanks,
Neil Casey.
Hi,
maybe I'm looking too soon, but I don't see a download link any more. Also, is there any word on a JRE1.5 version. I'm happy to work with the source and compile it myself if that would be simpler.
Regards,
Neil Casey.
Due to files size restrictions of TIBCOmmunity I had to breakup the JmsStreamEXE.zip into three archive files. Download all three JmsStreamEXE files to get the full archive for the EXE version.
Source code available on request.