Where can I find a simple IBM MQ Client for Windows - windows

The Context:
I'm hoping I'm missing something simple. I am a novice in IBM MQ
My organisation distributes XML messages via IBM Websphere MQ. Each message represents a record that I simply want to save to a file and clear from the queue.
The current mechanism we have is a poorly understood and overly complex Java program that seems to use both MQ libraries and JMS to do this.
I am hoping to move this to something simpler and easier to maintain, but I can't seem to find a generic 'IBM MQ Client' that can do things like connect to a queue and save the messages. It seems like you have to use binaries or DLLS and build an application around it.
I tried Python as that's closer to my understanding but PyMQI is only for Python 2 (which we don't use) and requires a C compiler which always seems to refuse to work.
The question:
Is there a program out there in windows to simply access a queue and save the messages to a file? We connect periodically so I can just wrap a scheduled task around it.

IBM MQ queue manager and clients communicate using a proprietary protocol, so you definitely need to use IBM MQ Client binaries (dlls or lib or jars depending on language you are comfortable with) to put/get messages to/from a queue.
I am sure the JMSToolbox mentioned by #titou10 runs on top of IBM MQ JMS jars.

Yes
If you deal with JMS messages in IBM MQ then JMSToolBox on SourceForge is a tool that will fulfill your needs.
You can download it here

Related

IBM MQ: How to get CCSID of a remote queue manager using IBMMQDotnetClient

We are trying to read the CCSID of a remote queue manager using IBMMQDotnetClient 9.2.5. We are on Windows and the queue manager can be on Windows, Linux, or z/OS.
We tried using MQQueueManager.CharacterSet/CodedCharsetId properties and MQQueueManager.Inquire. These return the local/system character set. This is not what we want.
We also tried using PCF commands. That works for a Linux and Windows queue manager (not z/OS one) but requires more authorizations from the application user, which is our MQ administration (rightly so) reluctant to provide.
In the old version of our product, we do this using the C API MQINQ - but that requires deploying related C libraries which we would now like to avoid.
At the moment, we are using a workaround that is equivalent to specifying the MQCCSID environment variable to override the CCSID. (In other words, we are aware of that environment variable and do not see it as a very good solution).
Does someone know of a better way to do what we want to do?
NB: for any IBM staff seeing this: I opened support cases, the last one is TS009748884 https://www.ibm.com/mysupport/s/case/5003p00002gNy21AAC/mq-c-and-net-libraries-give-different-results-when-inquiring-for-the-queue-manager-ccsid?language=en_US. In there, IBM support person recommended to ask in the MQ support community. They provided this link: https://developer.ibm.com/articles/mq-downloads/. From what I see on that page, the only place to ask questions is SO - hence I am here.

Can WebSphere MQ transfer file(e.g. *.txt) directly?

I'm new to WebSphere MQ and I am trying to move files through WebSphere MQ as messages using c# code. Can WebSphere MQ transfer files (e.g. *.txt) directly?
Thanks in Advance.
WebSphere MQ File Transfer Edition (FTE) is a product built on top of WebSphere MQ for transferring files. No coding is required to for transferring files. There are commands and MQ Explorer through which you can configure your file transfers. You can also start file transfers through scripting.
Read through this developerWorks article
No, base WebSphere MQ does not directly transfer files. The semantics for moving files include such things as file names, directory paths, conversion of names across different types of filesystem (i.e. a UNIX filetree versus a z/OS Partitioned Dataset). Messaging uses semantics specific to queues and topics and these are drastically different from those for files.
Accordingly, base WMQ does not attempt to perform file semantics as part of its core functionality. The WebSphere MQ File Transfer Edition and IBM Sterling Connect:Direct provide that functionality. In the case of FTE, managed file transfer is natively built on top of WebSphere MQ.
Many people have in the past written solutions to move files using messaging, whether that's WebSphere MQ or another transport provider. It turns out that doing so in a robust way is a non-trivial task. Here are some of the issues:
If you make each file a single message then message sizes vary considerably. It is very difficult to tune the messaging engine to simultaneously perform with very large and very small messages.
If you break the files up into chunks then you cna tune chunk size for optimal messaging performance but now you must deal with sequence preservation and resend of missing messages.
The general problem of whether to append, replace or rename a destination file with the same name.
The general problem of how to make the file available at the destination in a transactional manner. You don't want the recipient to grab half a file.
File integrity (FTE hashes the file to insure it doesn't get changed in transit).
These are a sampling of the issues to do this in a general-purpose way. However if all you need is a one-time, point-to-point solution then have a look at SupportPac MA01, the Q program. It will take files and either put a line at a time into a message or make the entire file a single message. It can also be used as a pipe so it's possible to have two instances of Q where one pipes messages to a queue and the other retrieves them.

How can I teach myself websphere?

I have a chance to learn how to administer and develop for WebSphere. But after trying to find a book for it I am at a loss where to begin. I was hoping for some advice. I may have access to the IBM RAD IDE (I think that's what it is), but I am not sure.
I have a project I'd like to put on it but I am lost. Thanks.
edit: I do not care which language I end up using.
Ok. There are two parts to your question (and I'm sticking to the base application server here):
a) writing applications: WebSphere Application Server is a J2EE application server. So any web resource or forum or blog describing how to write servlets or JSPs or applications that use EJBs will work. There are lots of those. If you want to stick with IBM resources, you could look for redbooks or developerworks articles. For more general information (patterns, practices, etc) you could try http://theserverside.com.
b) administering the application server: Redbooks like this can give a pretty good overview (as the other poster mentioned).
There is also a WebSphere education channel on youtube which addresses both questions.
Download a trial MQ server from IBM (to some hosts or VMs? that won't matter if you break them...), and (optionally) add a WMB in front of it to transform some messages and fire some messages at it from a GUI client via another broker?
so you 'could':
ia92 java gui to fire messages->microbroker(or rsmb or mosquitto)->WMB(optional)->MQ
have a look at the messages arriving on MQ via Websphere explorer (or its command line client, try googling for 'websphere MQ quick reference card') have a fiddle about with its subscriptions etc
and then start consuming those messages from its queues on the 'other' side of the chain via a WAS and then a java client
MQ->MQ(bridge maybe)->WAS->some Java EE client you've written
don't forget the red books, keep it simple and then keep on adding complexity e.g. encryption etc.

Platform independent streams

We have two systems, one based on JMS and another based on WebSphere MQ.
There is client A which sends a message to a topic configured in JMS. Another client B which receives this message through the Topic configured in WebSphere MQ.
How can I make this communication happen? What are the considerations while building this bridge? If bridge is the solution, how can I build it?
I assume from your description that one of the clients is written in Java (JMS) and the other one is written in an other language and both have access to the same queue. MQ-Series is a queuing product, JMS is a Java API (like JDBC is to relational databases). MQ-Series supports the JMS API so there is no problem in communciating messages. JMS will probably be a subset of possible MQ-Series features.
Make sure that the content can be interpreted by both parties. The standard way is to use XML in the message. But you could use any other format that both clients can understand. You could also use CSV (comma separated values), JSON (JavaScript object notation) and there are even cross platform binary formats like Hessian.
But if you could be more specific about the participants and the kind of information you want to communicate, you probably would get more specific answers.

Tool for posting test messages onto a JMS queue? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
Can anyone recommend a tool for quickly posting test messages onto a JMS queue?
Description:
The tool should allow the user to enter some data, perhaps an XML
payload, and then submit it to a queue.
I should be able to test consumer without producer.
This answer doesn't apply to all JMS brokers, but if you happen to be using Apache ActiveMQ, the web-based admin console (by default at http://localhost:8161/admin) allows you to manually send text messages to topics or queues. It's handy for debugging.
HermesJMS seems to be a rather powerful client for interacting with JMS providers. In my opinion, it is pretty unintuitive and hard to set up, though. (At least I'm mostly failing at it...)
Other, more user-friendly clients are often vendor-specific. Sonic Message Manager is a very nice and simple-to-use open-source JMS client for SonicMQ. It would be great to have a client like that working with different providers.
The ActiveMQ's web-based admin console has a big deficiency - one cannot specify any headers / custom properties when posting a message.
I came across a neat FOSS tool that can post a message and also specify headers/properties:
http://sourceforge.net/projects/activemqbrowser/
HTH
Apache JMeter is a tool (written for the Java platform) which allows:
sending messages to a queue ( point to point)
publishing/subscribing to a topic
sending both persistent and non persistent messages
sending text , map and object messages
Apache ActiveMQ includes a ProducerTool and a ConsumerTool example sources (Java) with many command-line configuration options. As it is based on the JMS API, using it with other message brokers should be easy with minor modifications.
IBM provide a free, powerful command line tool called perfharness.
Although aimed at benchmarking JMS providers, it's really good at generating (and consuming) test messages. You can use data either generated randomly or taken from a file.
The power features include sending and consuming messages at a fixed rate, using a specific number of threads, using either JMS or native MQ, etc. It generates statistics telling you exactly how fast your queue is performing (hence the name).
The only down side is that it's not super intuitive, given the number of operations it supports.
I recommend the approach of #Will and using the Web Console of ActiveMQ which lets you post messages and browse queues or delete messages easily.
Another approach I often use is to use a directory of files as sample data and use a Camel route to move the messages from the directory to a JMS queue - or to take them from a queue and save them to disk etc
e.g.
from("file://someDirectory").
to("activemq:MyQueue");
This would move all the files from someDirectory and send them to an ActiveMQ queue called MyQueue. If you'd rather leave the files in place you can use the URI "file://someDirectory?noop=true".
For more details see
the file endpoint in Camel
a sample Camel example routing from files to JMS
the various enterprise integration patterns Camel supports
Also if the JMS broker supports JMX like ActiveMQ does you can use JConsole to post message and do a lot more.
ActiveMQ has a web console for sending test messages (like mentioned above), but if your provider doesn't have this, it might be easiest to just write a console app/web page to post test messages. Sending a message in JMS isn't too hard, you might get the most benefit just writing your own test client.
If you can use Spring in Java, it has some really powerful utilities, check out the JmsTemplate.
I'm not aware of a simple client. I remember looking for one a long time ago when I researched different queue systems and trying JMS I couldn't find one then, and I couldn't find one now. One thing though - there are a ton of tutorials that get you started and you could do a simple form to achieve that.
Sorry to be not more helpful.
I have built a GUI tool for administering Open Source JMS Servers (Currently Activemq and Hornetq). It can send and receive messages and most of the usual stuff, as well as aggregate queues and topics into logical "groups".
Its a commercial product but the BETA is free and is fully functional.
try it out at http://www.rockeyesoftware.com/
For ActiveMQ the examples directory holds scripts. For Rubyists, look at example/ruby/stompcat.rb and catstomp.rb for subscribing and publishing.
I'm a brazilian developer and I made a Java program for Post HTTP and JMS Messages his available for download at: https://sites.google.com/site/felipeglino/softwares/posttool
In thath page you can found english instructions.

Resources