This post was something I starting writing last December, and at that time only had vague memories of sites connecting DataStage with TIBCO queues. And those memories were of C++ code used in a custom plugin to communicate with TIBCO Rendevous. I wanted to see if anyone out there had tried it in one fashion or another with TIBCO and JMS (Java Message Service) Queues. Fast forward 9 months and I can tell you that it’s been done several times — by at least one of my colleages in IBM Lab Services (more than once), and most recently by myself for a DataStage evaluation.
I’m happy to report that it was a perfectly normal and standard JMS implementation, and JavaPack handled it well, yielding control to the Java Class that connected to the TIBCO JMS queue. Having long since proven that I could connect DataStage to BEA, JBoss, and Sun JMS, once I had the appropriate TIBCO libraries (jars) and connection properties, the class compiled and the Job just “worked.” Amazing how rewarding it is to get some “new” connectivity working. Makes you feel like a kid in a candy store.
Anyway, the process is very straightforward, assuming you are comfortable with Java and JMS (see my other Java entry for example class that works with DataStage). The “initialization()” method does all the start-up connectivity work, and the core of the JMS reading and writing is placed inside of the “process()” method. When the “process()” method is invoked by the DataStage engine, the class determines if the invocation is for an output link or an input link, and the JMS code communicates with TIBCO JMS and either writes to, or reads from, a selected Queue. Data to be written to a target queue is first read from the DataStage Input Link, and payloads read by the java class are “written” to the DataStage Output Link….
If you need to do this with DataStage, find a Java developer who knows JMS, and knows the particular provider…each provider has unique properties for things like “InitialContextFactory” and “ProviderURL” and values for the jndi names of the queues and their Connection Factories (lots of interesting Java stuff — too much to post here). JMS queues can have pure strings in “Text Messages” or have other types of messages with different formatting. There are headers to deal with here also. Not a place to jump into lightly if you are only immersed in DataStage. Instead, find a Java expert, and then work together with him/her to find the synergy you can get with JavaPack integrated inside the DS Engine.