We have a lot of business logic in .NET 4.0 which reads a message from an IBM MQ, does some processing, and writes to the database all in one transaction (coordinated by MSDTC). Is there some way to do this in .NET 5? As far as I know, .NET 5 does not support distributed transactions.
Related
My understanding is that if I am using in my application the IBM.XMS.dll I aslo need to have installed in the application server the MQ Client to allow connections with the MQ Server.
What about the new libraries which support .NET Core amqmdnetstd.dll & amqmxmsstd.dll?. Are they independent of the MQ client?. Is it enough to have those DLLs bundled in your application, so you don't need the installation of MQ client in the application server?
I assume you are working with MQ 9.1.
Installing IBM MQ classes for .NET Standard says that amqmdnetstd.dll is the successor of amqmdnet.dll, and Using XMS with Microsoft .NET Core says that amqmxmsstd.dll is the successor of the IBM.XMS.* libraries. These two articles link both to Using the stand-alone IBM MQ .NET client, which says that you can use only the DLL as MQ client.
So reading all this I would say that is enough to bundle the two DLLs with your application.
I am new to IBM Integration bus and I would really appreciate if anybody tell me how to connect IIB with the PD (IBM BPM). I tried to get some reference materials for the same but the description in the material is for Message broker fix pack 1 and its different from what we have now in IIB 9.0.0 & 10.0.0
IBM BPM can expose some Web Sercives if you build then within a Process Aplication. By the book the IBM BPM come with a REST API to interact to product itself.
Consider this charecteristcs the way to integrate with then is using HTTP Request ou SOAP Request in the IBM Integration Bus Flow.
there are certain ways to communicate IIB with IBM BPM.
1 through web services (SOAP and REST).
2 UCA(Under Cover agent)
3 Database
but preferred way would be UCA and Web Services
I have got a requirement to test an application which upgrades from web methods 8.2 to 9.5 in ESB.
While I tried to understand what is an ESB, I assume that ESB can be of 2 types - Web Sphere Enterprise Service Bus V6.0.2 and Web Sphere Message Broker V6.0.0.3.
Now what does the Term web methods imply ? What is the relation between the 3 terms - Web Sphere Enterprise Service Bus, Web Sphere Message Broker aESBnd Web Methods ?
I tried to google and in some places, it is mentioned as broker is part of ESB and some places, it is like we can use either broker or esb ... But I am still not clear how this 3 terms are related with each other.
Please clarify
There is no connection between WebMethods and WebSphere products. WebMethods is an ESB made by SoftwareAG. ESB is a generic term for referring to messaging busses (let's say software for transferring messages). Latest version seems to be 9.5. Your requirement is to upgrade their ESB (that is WebMethods) from version 8.2 to 9.5.
WebSphere Message Broker is also an ESB. This one is made by IBM. So is WebSphere Enterprise Service Bus, but this one is made to cover other use cases. The later is discontinued, and the former is being renamed to IBM Integration Bus.
I am not expert in JMS and recently came across a situation in my project where they wanted to use JMS to communicate between applications. Is it possible to make use of JMS without an underlying MQ software like Websphere MQ / TIBCO EMS to communicate asynchronously. My thinking is that just like we use JDBC API to speak to a physical Database product (like Oracle/DB2 DB) underneath, we would use JMS to speak to a physical queue. But my team says just JMS and no queue. Can anyone help me understand? We use Websphere 6.0 server and use spring framework.
Thanks in advance.
You are correct: JMS is solely an interface, it contains no implementation. The comparison with JDBC is quite fitting.
When using JMS you always need a JMS provider. A provider is the JMS implementation, which interfaces a message oriented middleware.
Most application servers have built in JMS providers, so maybe your team meant using JMS without an external provider.
Is it possible to make use of JMS without an underlying MQ software like Websphere MQ / TIBCO EMS to communicate asynchronously
This makes no sense. Few points to note -
JMS is just specs. By specs you can imagine it as set of APIs/interfaces/ method signatures and governing rules.
There are various organization/companies that provide implementation of these APIs.Apache's ActiveMQ,IBM's Websphere MQ or TIBCO EMS are some of the examples.
Now when you say I want to use JMS then you need a JMS compatible server i.e server which understands the rules laid down by specs. This is generally know as MQ server and is provided by the provider.
My thinking is that just like we use JDBC API to speak to a physical Database product (like Oracle/DB2 DB) underneath, we would use JMS to speak to a physical queue. But my team says just JMS and no queue
Two things to note here. When you say you want to use databases and JDBC APIs to communicate JMS comes no where in the picture. Please understand why JMS is used. In short it is used to transfer messages between two decoupled system. What storage type JMS server uses(and if it is configurable) will depend on the provider. Generally all have DB storage type and can be configured to use your DB.
Next JMS has two types of communications - PTP(peer to peer) which uses queues and PUBSUB(publish subscribe) which uses Topics. When you say you are using JMS everything boils down to either of these two and some of it's variants.Now when you say JMS without a queue perhaps your team meant using PUBSUB. But again it is not something you decide randomly and use it in your application. This decision is takes as per what your requirement is as both of them behave differently.
First you will need queues/topics to use JMS.
Second (your team probably means not using WebSphere MQ because my team was saying the same thing)
This diagram in IBM's Red Book will fully answer your question (it is the same as WS6):
http://www.redbooks.ibm.com/redbooks/pdfs/sg247770.pdf
page 4.
Probably what you will be using is the WebSphere Default Messaging Provider.
I understand JMS spec allows me to write MDBs. Then I can deploy them on an appserver like websphere or jboss (and they have inbuilt implementation of JMS provider which is Java EE compliant). The question is when to use a full fledged product like IBM WebSphere MQ or ACtiveMQ instead of using App server's inbuilt JMS provider.
This appears to be a good reference to what you are asking, specific to IBM products but can be generalized to using an application server integrated messaging system vs a standalone messaging system - http://www.ibm.com/developerworks/websphere/library/techarticles/1109_wallis/1109_wallis.html
A built in JMS provider, such as WebSphere SI Bus, possibly others, are built for JMS messaging.
WebSphere MQ (MQSeries), ActiveMQ etc. have clients for multiple languages and are built for applications other than Application Server hosted applications to connect to it (C++, Java SE, Python, etc).
Say you want a local messaging server on the same physical server (or network?) as a non JavaEE application, you don't want to install a Java EE App Server, but want a stand alone messaging server instead (WebSphere MQ, Active MQ).
That said, ActiveMQ, for instance, is the messaging system inside Apache Geronimo. So there is overlapping here.
Then there is a whole discussion about management, clustering and security. Java EE messaging systems are pretty much optimized to follow the cluster layout of Java EE. In other deployment scenarios, the clustering might be optimal in other ways, such as cluster for different security zones. Also security models and management tools might be different in stand alone messagaing servers.