I was thinking that I could get some design how I am facing the design problem. For sake, suppose that I have 3 points running on the Tomcat in three different machines / jvms i end points are the following responsibilities:
End point 1 - takes data into demand and this data Order changes in orders
End point 2 - Take in sequential requests Confirms, orders saves, and one
endpoint 3 - in any order, the seller takes the format specific XML, and sends it to a queue.
EDIT: This endpoint is the option of using ATMs for a JTA Transaction Manager by the other REST as existing services, and we are using active MQs.
With that being said, I have a queue setup that receives the demand data message. For each received demand data message, I essentially want them to funnel through each of the three end points in a unit of work through the XA. I have complete control over every 3 final points, so I have some flexibility in using the communication protocol. Apart from this, eventually 500 million to 10 lakh messages of these will be coming on daily basis. What communications protocol will you use to tie these end points together in a distributed transaction?
I have some experience with camel, but I have come to know about how to tie together one unit of work. Will RMI be better than JMS because it seems synchronous in nature? Thanks for the time before any help.
From Fuses:
Distributed Transactions A distributed transaction is related to a transaction in a distributed system, where the scope of transactions spreads multiple network nodes. A basic prerequisite for supporting distributed transactions is a network protocol that supports transmitting transaction references in a pilot format (see also, distributed transaction managers). Distributed transaction Apache camel is out of the scope of the transaction.
Distributed transaction managers Usually, a server directly connects to the resources involved in a transaction, in a distributed system, however, it is sometimes necessary to connect those resources That only indirectly comes through a web service or via the Corba IDL interface. In this case, you need a TP monitor which is capable of supporting distributed transactions. There are several standards that describe how to support transactions for different distributed protocols, for example, WS-Atomic Transaction Specification for Web Services and Corbab Object Transaction Service (OTS) specification for Korba applications.
So no wonder you are getting stomped. Apache camel does not include your use case.
I think you can go in two ways:
- Big distributed transactions
- Small transactions synchronized with indemnity tasks
JETA in tomato JTA is a global transaction manager. You probably need both of these solutions (although with some clever negligible you can manage it without having to go for the option number two.) Tomcat can not run JTA transactions, but with the help of a transaction it can do. See . Adding a spring will be easy to configure. Not all JMS implementations support JTA / XA resources. You have to see what happens to you.
Distributed transactions Your transaction length is not very long, but you will continue the locked resources for a while, and you have many transactions, the performance will be hurt .
Built on JTA JTS and OTS, a JETA server should be able to coordinate the transaction with other JTA servers through OTS. It is not trivial to install, to begin, you have to find out its implementation which supports it. And then you have to know how to raise it and run it.
At high level you have WS-transactions and WS-sync. See.
Indemnative actions suggest that it may be better to use a set of synchronized small transactions that are not rolled back, but for which the indemnity Can be taken to clean the mess which occurs when the steps fail.
Sending a notification from time to time will be such an action.
If you can go this way anyway, then I will take it. If you can know that order requests can not be completed, you can cancel the order request given in the endpen.
No comments:
Post a Comment