Technical Articles
PI/XI: ActiveMQ – free but yet powerful JMS provider
When I wanted to try out SAP PI’s JMS adapter for the first time I was wondering is there
any way I can use it with free JMS provider. I knew about MQSeries, SonicMQ but those
were a little bit too big to start with especially if you don’t have a license. Then I found out
about J2EE’s JMS queue which can be used for this purpose and it’s usage was later on presented in one of William Li’s blogs:
How to use SAP’s WebAS J2EE’s JMS Queue in Exchange Infrastructure
This was something I was looking for but the biggest drawback of that approach was
that where was no monitoring nor testing tool for J2EE’s JMS Queues. It turns out however
that there are a few alternatives and I’d like to show you one of them – ActiveMQ by Apache.
ActiveMQ is a powerful JMS platform and can easily integrate with SAP PI. Below you can find
a step by step guide on how to make it talk to SAP Process Integration.
1. at first you need to download the latest version : http://activemq.apache.org/download.html
2. then you need to use file activemq-all-5.3.0.jar in order to create deployable driver as per OSS note:
1138877 PI 7.1 : How to Deploy External Drivers JDBC/JMS Adapters
(remember to remove the content from javax/jms folder as per description in OSS note)
3. next you can deploy the JMS driver to SAP PI using JSPM (in case of using SAP PI 7.1)
4. then you should get your ActiveMQ running by following the guide published on this page: http://activemq.apache.org/getting-started.html
5. once you get it running you can open page: http://localhost:8161/admin and create two queues that will be used later on with SAP PI (one for outbound and one for inbound scenario) my queues will have names: testdlaPI (outbound) and testdlaPIIB (inbound)
6. now once this is done we can create our JMS communication channels. You need to select Generic JMS configuration and fill in the data as per the screenshot below for both channels (just the queue name will be different)
Remember that port is in most cases 61616 unless any other is specified in configuration file: activemq.xml
7. then you can check if the channels are working properly in communication channel monitor
8. if they are working correctly you can create a whole JMS – JMS scenario using those two channels
9. if both channels are working we can try to put a message to one of our queues (outbound)
as shown per screen below by clicking on the queues – send to link on the main screen of activeMQ administration page (we only need to put the message we can leave all the rest of the parameters as they are – they can be used later on for some other tests)
10. once we click the send button we should be able to see that in a few seconds the message will be available in the inbound queue and gone from the outbound queue
Hope this blog gave you a nice idea on how easy can JMS configuration be when used with activeMQ.
Maybe in addition to this Blog:
Check my Forum Questions for the issues I faced (and solved) while setting up a JMS adapter to ActiveMQ for PI 7.0:
How to connect SAP PI 7.0 to Apache ActiveMQ?
PI 7.0 JMS Rcv Adapter: Object not found in lookup of XIJMSService
Maybe this is helpful to someone.
Reg., Walter.
thanks for those links 🙂
I had not issues with 5.3 and PI 7.1
but it's good to know where to look in case of any issues 🙂
Regards,
Michal Krawczyk
Did the same setup with Active MQ and Open JMS for a fiew prototypes back then with good old XI 3.0.
It worked very well.
Best regards
Sebastian
thanks a lot for your blog entry. I helped me to understand the topic.
Do I have to perform all steps of the installation guide that is shown here or are there only some parts relevant? (http://activemq.apache.org/getting-started.html)
Thanks again,
André
I am trying to reconcile lots of conflicting OSS notes on how/where to install the JMS drivers. I am using a single stack version of PI 7.31. I would greatly appeciate any advice you have on simply installing these drivers. Again, lots of notes claim to illuminate this but refer to archives and directories many do not find in their installations.
Has anyone tried this with the latest versions of SAP PI 7.4? I've tried using Active MQ 5.11.1 and had all sorts of major minor java version errors.
I wondered if anyone knew what the best version of Acive MQ is to use?
Hi Jon
I can see that this question is a bit old, but just want to give my 2 cents as I just implemented the Active MQ JMS on a Single stack PO. The best version I have tested out is 5.3. This is compatible with most Java versions that we use in PI/PI installations.
Cheers,
Chris
Hi Jon,
Not particular with 7.4 but i assume with "major/minor" version errors you deployed a jms driver that was compiled on a higher level then Java 1.6 (which 7.4 is running on in form of the SAP JVM).
You might download the source version of the driver, compile it on 1.6 then deploy it.
(Worked for me before with 7.1 PI and compiling for the underlying 1.5 JVM).
With best regards
Sebastian
Hi,
first many thanks to all of you posting these informations, they were very helpful.
Here my experience on connecting to a Active MQ:
- we are running PI 7.4 Kernel Version (JAVA-Only)
- VM-Java-Version: 1.6.0_91
Active MQ - Server - Version is 5.11.2
We tried to install the driver for this version on PI side, but this doesn't work because there is issue on java versions (java.lang.UnsupportedClassVersionError) on the jms-adapter-channel.
We checked, if we can compile to Java 1.6 (like Sebastion Simon mentioned) but this seems not to be possible. So we took the driver out of Version 5.10.2 and our proof of concept is working.
Regards
Jürg