We are using IBM MQ as MoM for Java based JMS application. I need to know the underlying communication protocol used by ibm mq. Specifically, if I need to communicate using MQTT protocol with IBM MQ, do I need to use MQ Telemetry product ?
The MQ JMS client will use a proprietary protocol to communicate to the queue manager rather than the MQTT protocol. This proprietary protocol is not published externally like the MQTT protocol is.
If you need to use the MQTT protocol then you will need to use a MQTT client.
Related
I'd like to use regular AMQP or JMS clients to connect to a Solace message broker but don't know enough about these protocols to know if they are compatible. From what I can tell Solace implements AMQP and JMS bu possibly with incompatible extensions (e.g. "message vpn").
Does Solace have incompatible extensions, particularly for JMS, or is there a straightforward way to get a JMS client to speak to a Solace broker with "message vpn" enabled?
The choice is yours as Solace provides both a JMS client implementation and it also supports AMQP 1.0.
Keep in mind that JMS is an API and AMQP is a protocol. The JMS API can be implemented over any suitable wire protocol, and AMQP can be exposed via any suitable API. JMS is Java-based and there are many JMS implementations using different protocols under the covers. There are also many AMQP clients written in different languages on different platforms all with different APIs. There are even projects which combine both JMS and AMQP like Qpid JMS.
Solace's PubSub+ event broker works on binary payloads which means that you can indeed publish and consume messages on cross protocols and APIs.
The Solace APIs have detailed documentation on how to process the payload in a type agnostic fashion.
As you can see in this diagram, we support a wide range of APIs and protocol integrations.
There are also sample codes present over at this Github account listing examples on using Solace broker with JMS and AMQP : https://github.com/SolaceSamples?
(Answering my own question).
I basically wanted to know if it was possible to connect to a Solace/JMS broker using more popular messaging libraries. As far as I can tell the answer is no in general.
For example,
one feature of JMS is JNDI lookup of the InitialContextFactory. I don't think that is possible to do outside of a JMS library.
Does Apache Active MQ provide Server-To-Server-Connection as IBM Websphere MQ does?
Background:
We currently have Websphere MQ 7.0.1 (CUST) installed to communicate with another remote Websphere MQ Server (GOV), which is not under our control.
The MQs hold a Server-To-Server-Connection via VPN-tunnel. We would like to replace our Websphere MQ with Apache ActiveMQ.
We have one QM-Manager with 4 queues and 3 channels.
Queues:
OUT (type remote): for sending messages to GOV
QOUT (local type transmission) that is used for OUT
IMP (local): used for receiving from GOV
DLQ: (local): dead letter queue
Channels:
conch: server connection
CUST_GOV: sender
GOV_CUST: receiver
I read a lot about bridging ActiveMQ to Websphere MQ (Client API, Resource Adapter, OSGi) with Camel.
Looks pretty easy with a Camel route, but this is at least a Client-Server setup.
E. G. https://www.shaishavparekh.com/2016/01/wmq-to-amq-bridge/
I need something that hides away the IBM proprietary channel stuff.
Now I found this entry: https://serverfault.com/questions/366743/apache-activemq-server-to-server-connection
As this is from 2012 I would like to ask, if anyone successful switched from Websphere MQ to ActiveMQ resp. is it still true that I can only use Client-Server?
ActiveMQ does not support a server-to-server connection to WebsphereMQ. As you mentioned, Camel would probably be the simplest way to get a connection between the two brokers.
To be clear, even if ActiveMQ did implement a bridge with WebsphereMQ it would almost certainly use the WebsphereMQ client so would fundamentally still be a client-server implementation. It's not really clear from your question why you want to avoid this.
NEWBIE Question here, maybe I am way off...
When I send a JMS text message to an ActiveMQ topic using the activemq-all jar, is a JMS message actually sent over the wire, or does ActiveMQ actually map/transform the message to pure AMQP?
Thanks.
JMS is an API specification and not a wire level protocol specification. It defines a set of APIs a Messaging provider must implement to call the messaging provider a JMS provider. How the JMS APIs are implemented is internal to the implementer. ActiveMQ might(or does) use AMQP protocol under the hood to implement JMS APIs. Others, for example, IBM MQ uses it's own proprietary protocol.
An earlier question on interoperating with MQ Series and a pure open-source solution was answered partly with:
"The one exception is that WebSphere App Server Messaging Engines can interoperate with WMQ. These are pure JMS messaging engines written in Java but they understand the WMQ formats and protocols and appear to WMQ as another QMgr. So if you have WAS you can talk to WMQ without a WMQ client or another QMgr."
(http://stackoverflow.com/questions/18236860/can-we-talk-to-remote-websphere-mqseries-purely-with-non-websphere-mqseries-soft)
The documentation I've read through says that
WebSphere Application Server using WebSphere MQ link can operate with a service integration messaging engine or queue-sharing group.
So as I understand it, if you have WAS and WebSphere MQ link you could connect an WebSphere esb to an exterior MQ Series QMgr and look like a QMgr to that exterior MQ Series QMgr.
Without a WebSphere esb though can WAS act like a MQ QMgr and somehow manage third-party JMS messaging providers like ActiveMQ?
Thanks for any help
I believe you are mixing up capabilities.
WAS can absolutely appear to WMQ as another QMgr when using the WMQ Link. The QMgr appears to WAS in this configuration as another Service Integration Bus.
Service Integration Bus or SIB is the WAS abstraction for a JMS transport provider. It isn't the same thing as IBM's Enterprise Service Bus (ESB) product. Both talk to WMQ but WAS is in no way dependent on the ESB product to do so.
Either WMQ or any other pure JMS transport can be configured in WAS as a Foreign JMS Provider. The administrator points WAS to the JMS classes provided by the transport provider. These can include Active MQ.
There is no concept of WAS seeing WMQ but managing some other transport such as Active MQ. WAS can use normal JMS API calls to interact with Active MQ or any other transport provider. It can also make use of whatever administration API is provided by that transport provider using that provider's administration API. Since both WAS and MQ are IBM products, the integration is a bit tighter between them which is why you can use WMQ natively whereas other JMS transports must be configured as foreign JMS providers.
We are looking to put a mainframe on a bus. I believe it is AS400. To do this I want to have the CICS Mainframe send an AMQP message to a broker. There are dozens of AMQP Clients including JMS client. I don’t know enough about what is possible on a mainframe to say if I can use one of these client to send an AMQP message from the mainframe to a broker. Has anyone done this and if so any advise in doing this?
IBM i series (AS/400) are not mainframes. They are considered a midrange machine. The IBM z series are mainframes.
I regularly use Apache ActiveMQ on the IBM i. It has excellent Java support with the IBM JDK.
It is my understanding that the IBM z series also has excellent Java support.
IBM also offers Websphere MQ but I can't find any information on whether it supports the AMQP protocol.