on 10-12-2010 3:05 PM
Hi All ,
I have a Query regarding Transaction calls.
Suppose I'm calling a transaction like a webservice , it executes and insert data into a database.
But it should be in an order.
The triggering is actually in order , but if the previous call has a heavy payload to execute and the present one is very small in size due to processing time it may insert the data of the present call before the data insertion of the previous call.
So in such situation I need to check whether it is being executed now before starting the next call service.
It is something like Synchronising the transaction. (Outside the transaction)
Is there any solution for this ?
Thanks In Advance
Sravan
Hi Sravan,
in addition to Matthias you can use the [WSMessageListener|http://help.sap.com/saphelp_mii121/helpdata/EN/45/6a86ac88130dece10000000a11466f/content.htm]. Instead of calling the transaction directly via web call, you call the WSMessageListener via Web call. MII will put the message into the MII Message Listener. In a processing rule, you enter the transaction to be called. The messages will be processed sequencially.
Finally you can extend the idea of the MII build-in queue and build your own queue in a custom table.
Michael
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Matthias and Otto thanks for your reply.
Otto : To make it clear , I'm triggering the WSMessagelistener in a time gap of 5 sec and this inturn triggers a transaction .
Suppose ,The first trigger takes 50 sec of transaction processing does that makes the second trigger after 55 sec or
after 5 seconds.
If it is internally getting arranged as a Queue , then it solves my problem.
Sravan,
if you use the WSMessageListener, MII handles it as a synchronuos input queue. If a message arrives, MII will call the transaction which is defined in the processing rule. If a lot of messages of the same message type arrive in a short period of time (within milliseconds for example), then MII stores the messages in the queue and processes them sequentially one after the other.
Hope this helps.
Michael
Thanks Otto , last clarification required.
By Default there is only One ServerName (XMIIMessageListener) avaialable in Message listener for receiving Messages through Web service calls.
I would like to create more. I have admin role , but still that feature to create another server to receive Messages from webservice calls is not enabled.
How can I create a new server.
Hi,
there is only one server XMIIMessageListener to receive Web service calls. You have to define separate Message Names (enter the name in the URL of the WSMessageService call like this:
http://server:port/XMII/Illuminator?service=WSMessageListener&mode=WSMessageListenerServer&NAME=MYMESSAGE&Session=false
This defines a queue with message type "MYMESSAGE".
Michael
Hi,
for transaction execution sequence , i use flag and store the flag in a queue.
If flag is true that time transaction begins to execute and makes flag to false.
After completion of execution it makes the flag true for the next transaction.
This method makes transaction runs necessary order.
At the beginning you must set the flag true and store it in a queue.
Every transaction begins you must get flag value, if value is true transaction must execute, otherwise end.
If transaction executes, it must change flag value as false.At the end of the transaction flag must be set true.
Regards
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
I would try to use queues. Either JMS queue or MII message queue would do. Then you can process you data in a serial way.
Best regards,
Matt
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
12 | |
7 | |
3 | |
2 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.