Is elasticsearch java client backward compatible with server? - java

Can someone let me know if elasticsearch java client 2.4..x backward compatible with elasticsearch server 2.3.1?
I couldn't locate this information anywhere in elasticsearch docs.

As stated in this link:
https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/client.html
The client must have the same major version (e.g. 2.x, or 5.x) as the
nodes in the cluster. Clients may connect to clusters which have a
different minor version (e.g. 2.3.x) but it is possible that new
functionality may not be supported. Ideally, the client should have
the same version as the cluster.
they are compatible. However, the ideal scenario is that both client and nodes are in the same version.

Related

Which Java ES client should I use with ElasticSearch 7.6 cluster?

I want to use Java API client provided by ElasticSearch but I don't know if it would be compatible with my cluster.
I saw there was ElasticSearch High Level REST client which has been deprecated for the new Java API client. I could find information about what ES cluster would the High level REST client support but none regarding the new Java API client. Can someone point me in the right direction?
Compatibility information for high level REST client: https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.8/java-rest-high-compatibility.html
This section is missing for the new Java API client
You need to use Java High Level Client only because New Java Client support only forward compatible, below is what mentioned in documentation.
The Elasticsearch Java client is forward compatible; meaning that the
client supports communicating with greater or equal minor versions of
Elasticsearch. Elasticsearch language clients are only backwards
compatible with default distributions and without guarantees made.
However, You can use Java high level client with Elasticsearch 8.x version with compatibility mode enabled.

Connecting to IBM MQ without any IBM dependency jars from java client

Is it possible to connect to IBM MQ and read/write a message to queue without using any IBM dependency jar files. For example , I want to write pure JMS code to connect to IBM MQ , in this case do I still require IBM jars to connect? I assume we still need IBM client jars? Please validate my understanding.
Basically I want to connect to IBM MQ using java client without any IBM jars. Any help would be appreciated.
Not possible, as only IBM MQ JMS jars have the knowledge on how to communicate with IBM MQ queue manager and put/get messages. The question is why you don't want to use IBM MQ jars?
JMS is only a specification, not an implementation, just like TCP specifications. The actual implementation of JMS API is provided by vendors, like IBM, Oracle. The JMS API implementation is vendor specific, meaning IBM MQ JMS API implementation will work with IBM MQ only, not with any other JMS provider.
You say "if the server upgrades , I don't want to have to upgrade the client jars".
Well you're in luck. There is zero requirement to have matching client side and server side versions. Pick a version now and just keep using it. You only ever have to upgrade the client jars if you need a feature that was added in a newer version of the jars than you are using.
This any-version-to-any-version client/server protocol has always been a strong point in the IBM MQ implementation.

Java, IBM MQ, getting correct client JARs?

I have a Spring Boot app (1.5.2) that I need to act as a (JMS) client to an IBM MQ (7.0.1.2) instance; in order to read messages from Queues.
I am struggling to determine which JARs I need and where I can source them from.
I have reviewed the IBM website and various other sources but have found them somewhat contradictory.
Questions:
What JARs do I need?
com.ibm.mq.allclient? Does this work with version 7.0?
Where and how do I get the JARs?
Note: I have JMS up and running "locally" with no problems using ActiveMQ.
Thanks in advance
1) It depends on the version, but from V8 onwards com.ibm.mq.allclient is the easiest one to use.
2) All versions of MQ client are forward and backward compatible with all versions of MQ queue manager. 7.0 went out of support (and so no longer receives security fixes) back in 2015. 7.5 is the oldest in support version, but I'd recommend going to MQ 9 LTS for your client.
3) The MQC support pack is the easiest way:
MQC75 (7.5) http://www-01.ibm.com/support/docview.wss?uid=swg24032744
MQC8 (8.0) http://www-01.ibm.com/support/docview.wss?uid=swg24037500
MQC9 (9.0) http://www-01.ibm.com/support/docview.wss?uid=swg24042176
Be prepared for this not to 'just work' based on your experience with ActiveMQ. ActiveMQ is a totally different JMS implementation to IBM MQ, and unfortunately the JMS specification is loose enough that migration between providers isn't always seamless.
Answer 1:
See the following page in the Knowledge Center that describes how to configure the Java classpath for applications that use the MQ classes for JMS:
https://www.ibm.com/support/knowledgecenter/SSFKSJ_9.0.0/com.ibm.mq.dev.doc/q031560_.htm
The com.ibm.mqjms.jar will pull in the other required from the MQ client installation. So don't copy the jars file around, just reference the one from the installation as documented. If you must copy and/or embed the MQ Java client into an application bundle, use the "MQ Redistributable Client" only. Linked from the client download page (see Answer 3).
As an alternative to the com.ibm.mqjms.jar file, you can use the com.ibm.mq.allclient.jar which includes both the MQ classes for JMS and MQ classes for Java clients.
Answer 2:
Later versioned clients can connect to back-level queue managers. So you can use the latest MQ V9 client to connect to your MQ V7.0.1 queue managers. Be aware MQ v7.0.1.2 was released in May 2010 and is very, very old. You should have a plan in place to migrate to a later (and supported) version of MQ.
Answer 3:
https://www-01.ibm.com/software/integration/wmq/clients/
MQ V9 client, page here: http://www-01.ibm.com/support/docview.wss?uid=swg24042176

Reindexing elastic search data from version 1.3.4 to 2.0.0

I have data on elasticsearch server 1.3.4. I want to reindex data to server having version 2.0.0. using java api. Both versions require different Jars to make a connection to servers.
When I used jar of version 2.0 it failed to make connection to 1.3.4 and vice versa.
Any Idea how to do it ?

Standalone Java JMS Client for WebSphere MQ

Can I use just WebSphere's jar files with standard JMS to send messages to a WebSphere MQ server, or do I need to download their WebSphere MQ Client?
You can use just the jar files for both JMS and the native Java MQ API but the question is whether you really want to. The full client install includes sample programs in source and object form, utilities, tracing and more. When you open a trouble ticket with IBM they may ask for information that you would use these tools to gather. If you do not have the full install you may not be able to provide the requested diagnostic information. For this reason, IBM supports the full client installation. If you are just trying to learn JMS and writing a toy application this is probably OK. If the application is going into Production and you may want to get support on it someday, install the client.
The WMQ client install is free and available as SupportPac MQC7. It is a good is a to develop on the V7 client since it is compatible with the V6 QMgr. This saves you some testing when V6 goes out of service in September 2012.
Note that the JMS Thin Client referred to in another response is described in the Infocenter as "a Java service integration bus JMS client designed to run as an embeddable client in Java SE applications under the IBM®, Sun and HP Java run-time environments (JREs). The client supports no transaction and local transaction models." As noted there it is an SI Bus client not an MQ client, has limited platform support and lacks even single-phase commit. The actual WMQ client is specific to WebSphere MQ, has broad platform support and provides single-phase commit transactionality.
UPDATE:
As of April 24th 2012, there is no longer a charge for the Extended Transactional Client for any version of WMQ on any platform. I've removed the portion of the answer that explained the previous license terms.
You need the appropriate jars for creating what is called a JMS thin client. This will allow you to use standard JMS to talk to MQ. You do not need one of the specific clients unless you want access to the specific MQ API instead of JMS.
Ive seen app-teams do this on countless occasions.
Almost every time they will run into an issue at some point down the line and will then request support/help from their local support.
Diagnosing an issue on an environment that none of the standard mq tools/logging/tracing is virtually impossible. You cant even find out what version of MQ it is (dspmqver)
Different jars from different installations get mixed up, emailed around etc...
I can never understand why people dont just install the client and be done with it. Is it that big a deal to lose however many hundred meg the install takes ?
To send or manage message of Websphere MQ, you can use jms client like HermesJMS + the mq series libs, check it tutorial:
http://www.hermesjms.com/confluence/display/HJMS/WebSphereMQ
Check the demo here: http://www.hermesjms.com/demos/demo_mq.html

Categories

Resources