Async - Sync in BPM - Multiple Retries
I have an asyncronous interface from CRM which goes into BPM and makes a synchronous call into the destination application and expects a response. However if there is a connection failure from the HTTP adapter to the destination application, I want to try a further 10 times to try to get a connection at 2 minute intervals before failing the process and triggering an alert.
This part is working ok :
The first send fails and raise an exception (system exception) and the exception handler is invoked. In the exception handler branch I have set up a loop to try a resend at 2 minute intervals.
However when the first retry fails the process stops. I do not have a further exception handler branch for the retry block as I just wish to keep retrying at 2 minute intervals.
This leads me to believe that I need to have each retry in a block of its own and have an exception handler branch for each of the retries.
Can someone please confirm this is the case ?
This seems very inefficent to have to do it this way.
Does anyone have an alternative method to fufil this requirement of retrying a fixed number of times at a fixed interval ?
Note that I cannot use IS_RETRY_LIMIT in configuration as this is only for asynchronous processing. This is async - sync processing.
Thanks
Colin.
hi,
>>However when the first retry fails the process stops. >>I do not have a further exception handler branch for >>the retry block as I just wish to keep retrying at 2 >>minute intervals.
since this is a sychronous call, Xi wll only ry once and if hte call fails, i will mark he call as failed, tere is no way you can so a retry.
instead, i have a suggestion for you in terms of design. Make the http call asych with in the BPM. But establish a correlation using correlation editor. So have a send step and recieve step for recieving the response asychornously based on the corelation id.
now go to visual admin -> server -> SAP XI adapter yo will see retry interval and retry limit. here change these values to ur choice, default being 3 times afer 5 minutes.
by doing these changes you are ensuring that if the message fails the first time, Xi will put this message as waiting, and will retry to submit based on the setting u made to the XI adapter.
cheers,
naveen
Similar Messages
-
Hi Experts, Just wondering if this scenario is possible? Client Proxy (Async) -> Web Service (Sync) -> Server Proxy (Async) I've read some blogs about the bridge using module processor (RequestResponseBean/ResponseOnewayBean). But usually, I only see the sender being synchronous given that Async cannot be mapped to a Sync interface.The reason behind this scenario is to take advantage of the queueing mechanism of Async and to make the scenario loosely coupled. Do we have other ways to do this without BPM and coding? Thanks in advance.
Hi Mark
I think it's possible. You have to use request response bean in the receiver adapter.
The response bean will trigger a new interface and you have to configure one more ICO to map
that response to final async server proxy.
Generic PI Async-Sync Bridge Configuration for Any Adapters
You have to use virtual receiver for second scenario. -
Async/ Sync without BPM where Async channels are different.
Hi Guys,
I've created a couple of async/ sync bridges without BPM for File to Web Service to File and for JMS to Web Service to JMS.
Is it possible to use two different types of asynchronous communication channels when creating an async/ sync bridge? I've tried to create a File to Web Service to JMS queue, but it fails with the following error appearing on the File communication channel.
Error: com.sap.aii.af.service.cpa.impl.exception.CPAObjectKeyException: Value of key must not be null: ObjectId
All the best,
JohnHi John,
Actually the fact that you get this error in the sender file CC makes me think is it purely related to the communication channel configuration. Try to make sure if your scenario works without the additional RequestResponseBean in the receiver (so as a simple Async scenario). When you have that one working, try to add the RequestResponseBean.
Hope this helps,
Greg -
Idoc to SOAP Async - Sync - stuck @ bpm bridge
Hi there,
i'm implementing an SAP -
Idoc / Async ---> PI -
> Soap / Sync communication, the idea is that i update the Idoc Status back on erp using and status idoc, i got the whole scenenario working but the Async - Sync bridge part with the status idoc, i've been reading a lot but i cant seem to find a good tutorial that helps me implement the bridge, i found this tutorial :
https://wiki.sdn.sap.com/wiki/display/XI/File-RFC-File%28Without%20BPM%29
do you guys think i can make a workround so i dont have to do a bridge, because performance is a BIG issue on this scenario and i've read that BPM degrades performance,
Thanks in advance for all the input ill get
Best Regards,
Roberto.Hi Roberto,
Idoc doesnot support the synchrnous call. What you can do is send an ALEAUD IDOCs back as response. Please see this document for this:
https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/f6d2d790-0201-0010-9382-b50b499b3fbe?overridelayout=true
/people/saravanakumar.kuppusamy2/blog/2005/01/20/configuration-tips-for-a-business-serviceintegration-process-to-send-back-ale-audit-idoc
Also search in SDN for ALEAUD and you may get some more information.
Regards,
---Satish -
Correlation issue in JMS adapter - SYNC/ASYNC scenario without BPM
Hi,
I am working on a SYNC/ASYNC scenario with JMS adapter without using BPM. My scenario is SOAP<>PI>JMS. I configured the interface as below:
1. SOAP Sender channel
2. JMS Receiver Channel writing to Queue A.
Module used: a. RequestOneWayBean
b. WaitResponseBean
Correlation Settings:
a. Set JMS Correlation ID to "XI Message ID"
b. Store JMS CorrelationID of request (Checked)
c. Set JMS Property to "JMS Correlation Id"
d. Value = "XI MEssage ID"
3. JMS Sender channel reading from queue B ( I am exporting the message from queue A and importing into queue B)
Module used: a. NotifyResponseBean
Correlation Settings:
a. Set XI MEssage Id to "GUID"
b. Set XI Conversation ID to "Stored JMS COrrelationID of Request"
I can see the cid in the message from queue A. But I observed thhat the header format of the message in Queue A is "MQSTR".
ISSUE:
1. While writing the message to queue A, below adapter log details(part b) concerned me:
a. Message '8747a7c2-2b06-11df-8055-005056a70ed6' successfully processed by channel
b. Could not create acknowledgements for message '8747a7c2-2b06-11df-8055-005056a70ed6'
I am not sure why I am receiving the message that " could not create acknowledgements"
2. While reading the message from the sender channel,I consistently get the error message as below:
a. XI message ID corresponding to JMS message with ID 'ID:414d51205341504449442e514d202020c67b954b20005602'
will be created as a new GUID with value '21bca916-424f-41f6-3347-c71090392b58'
b. Error while processing message '21bca916-424f-41f6-3347-c71090392b58'; detailed error description:
com.sap.aii.adapter.jms.api.channel.filter.MessageFilterException: found no correlation ID: RecoverableException:
found no correlation ID at com.sap.aii.adapter.jms.core.channel.filter.SendToModuleProcessorFilter.filter(SendToModuleProcessorFilter.java:105) ...
Below are the blogs which I have already gone through:
1. JMS Synchronous Scenario without BPM - Correlation Settings and Transactional JMS Session
http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/b028f6f6-7da5-2a10-19bd-cf322cf5ae7b
2. Note: 1086303
3. Sync / Async Bridge without BPM
In the note, they mentioned something about header being "MQRFH2". BUt in our case, the header is "MSSTR". Not sure whether it makes any difference.
Please help.
Edited by: GP on Mar 9, 2010 4:24 AMHi,
detailed error description:
com.sap.aii.adapter.jms.api.channel.filter.MessageFilterException: found no correlation ID: RecoverableException:
found no correlation ID at com.sap.aii.adapter.jms.core.channel.filter.SendToModuleProcessorFilter.filter(SendToModuleProcessorFilter.java:105) ...
This error would generally arose when there are multiple messages, got stuck in the outbound queue. Try to stop both the sender and receiver JMS comunication channels and clear both the inbound and outbound queues.
Once all the messages in the queue are cleraed, try posting the message again.
Regards,
Swetha. -
Multiple Async/Sync bridge
Hi All,
I have read about single Async/Sync and Sync/Async bridges without using BPM. But my scenario is somthing where multiple Async/Sync bridges are required.
Here data will come in the form of an IDOC which is sent to a Oracle database server where we run a stored procedure and get one particular field 'xyz' which has to be updated to SAP R/3 system through a RFC. So it is something like:
IDOC->Oracle->RFC->SAP.
I have tried this using BPM, it is working fine. But because of performance issue, I would like to do it without using BPM. Can anybody please help me out in finding whether it is possible without BPM. If yes, then how?
Thanks
JayaJaya,
There is no need for BPM in ur scenario. You just need to write UDF in ur mapping program and can fetch the data from ORACLE and pass it to RFC.
Please see /people/siva.maranani/blog/2005/08/23/lookup146s-in-xi-made-simpler
If you need any more info, let us know.
-raj. -
Is there Async-Sync bridge in BPM
Hi ,
I am trying this scenario in ccBPM(PI7.10
JMS(Async)>MDM(Sync)>SAP(Sync)
The reason I cant use it without BPM is that message in JMS is needed in SAP step.I am not sure of messages can be persisted without a ccBPM.
When I give receive step as Async,in next send (Sync call) ,I cant see any Syn Abstract interfaces even though i have declared one.Only Asyn abstract interfaces appear to chose container element as abstract type.
In what way can I specify Aysn-Sync bridge in ccBPM ?
Regards,
Premjitthe async / sync scenarios can be configured via two options;
ref these
/people/arpit.seth/blog/2005/06/27/rfc-scenario-using-bpm--starter-kit
Without BPM
File - RFC - File without a BPM - Possible from SP 19. -
BPM error handling for async/sync
Hi,
I am using an async/sync bpm for sending a message from SAP using outbound proxy to call a synchronous web service.
Now, if I get a fault message from web service the queue will be blocked for other messages to flow through as it is an EOIO.
Can anybody suggest how can I get the fault message and errors out in PI with a red flag and not block the other messages to flow through in this design? I cannot change this design as it is the business IT suggestion to go through in ths way.
-MikeHow can a queue be blocked behalf of an error in a sync message?
I do not understand this.
Where is EOIO in this scenario?
The answer for this question from Stefan is below
The EOIO in this scenario is the first asynch proxy call from SAP.
But when I get a fault message back from the synchronous web service, it will throw an error in SAP PI.
And what will happen to the next asynch message from proxy? Will it be send across with no issue without correcting this error? I am not sure how this async sync queue work??? And also what is the exact difference btw EO and EOIO?
Why asynch proxy is EOIO and not EO.
-Mike -
Async-Sync Bridge without BPM for SOAP WS and JDBC
I heard you can now have async-sync communication outside of BPM by utilizing adapter modules?
My scenarios are:
proxy (async) -> SOAP WS (sync)
proxy (async) -> JDBC (sync)
I will like to capture the synchronous responses in XI and perform some basic error handling.
I read h[File - RFC - File without a BPM - Possible from SP 19.|File - RFC - File without a BPM - Possible from SP 19.] and the release notes for 2004s SP19 and there is no reference to JDBC or SOAP.
tiaHi Megha,
Plz do refer the below links u will get an idea:
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/a05b2347-01e7-2910-ceac-c45577e574e0
Sync/Async communication in Adapter without BPM (SP19)
Sync/Async communication in JMS adapter without BPM (SP19)
Async/Sync Communication using JMS adapter without BPM (SP 19)
Async/Sync Communication using JMS adapter without BPM (SP 19)
also try this
Sync/Async communication in JMS adapter without BPM (SP19)
File - RFC - File without a BPM - Possible from SP 19.
Collecting IDocs without using BPM
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/5059f110-0d01-0010-7c8b-fdc983be70c0
Have a look
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/5059f110-0d01-0010-7c8b-fdc983be70c0
HTTP to RFC - A Starter Kit
Sync/Async communication in JMS adapter without BPM (SP19)
https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/1403 [original link is broken] [original link is broken] [original link is broken]
Do refer this thread:
JDBC Async-Sync bridge does not work
Reward if found useful
Regards,
Vinod. -
Doubt on Sync-Async bridge using BPM
Hi Experts,
I had a doubt on Sync-Async bridge using BPM,
1. If sender system is SAP system and receiver system is non-sap system then while configuring in Integration Directory how many Receiver Determinations should be done ?
2.Plz explain if we have 2 receivers i.e one sender SAP system and 2 non-sap systems then what will be the no. of receiver determinations?
3.How we have to count no. of receiver determinations if we have 2 receivers and 1 receiver system? If so what is the no. of receiver determinations in case of 1 receiver syst and 2 receiver systems?
Plz clarify above questions good answers will be definetly rewarded.
Regards,
Vinod.vinod,
... Sync-Async bridge and Recievr determination are not related....
Sync-Async bridge means.. u r sending some request syncronously...and u r expecting the response also in synchronous way... but u r not getting the response directly...u r getting it via BPM..i.e asynchornously.....
see here what is the Use of Synch - Asynch bridge in ccBPM
/people/sriram.vasudevan3/blog/2005/01/11/demonstrating-use-of-synchronous-asynchronous-bridge-to-integrate-synchronous-and-asynchronous-systems-using-ccbpm-in-sap-xi
and here if u have 2 reciver... u have to create 2 receiver determination and ofcourse for BPM one reciver dtrmination is required.... since in BPM related scenario BPM will act as a reciver...BPM(IP) wil first recive the message then it will be forwarded to Receiver system!!! so total 3.
<b>3.How we have to count no. of receiver determinations if we have 2 receivers and 1 receiver system? If so what is the no. of receiver determinations in case of 1 receiver syst and 2 receiver systems?</b>
r u telling that u r having two recivers and each receiver is receiving messages using 2 interaces???
u have 2 use 2 receiver determination and 4 interface determination.
regards
biplab -
Async-Sync-Async Bridge Without BPM
HI Folks,
I have a requirement as
u201CAn Asynchronous SOAP request is triggered to PI and then should get records from a (JDBC)database and write the result to a fileu201D
It is of Aync-Sync-Async Bridge and i have to do without BPM
I know by using some module parameters at sender communication channel we can do this.
But my query
1)Is that for SOAP sender communication channel can we provide the same module parameters
Number - ModuleName - Type - ModuleKey
1- AF_Modules/RequestResponseBean - Local Enterprise Bean - 1
2- CallSapAdapter-Local Enterprise Bean - 2
3-AF_Modules/ResponseOnewayBean-3
Parameters
ModuleKey - ParameterName - ParameterValue
1 - passThrough - true
3-receiverChannel - Receiver File Adapter Name
3-receiverService - Receiver Business Service/ System
2) Does the SOAP support the without BPM scenarios
3)Scenario is like Soap --> JDBC -->File (Async - Sync - Async) and how abt for Soap --> RFC -->File (Async - Sync - Async)
Thanks in Advance
LemonFor your requirement , you can handle this scenario without BPM in two ways.
1) Async sync bridge without BPM. You are going to use request response bean and one way response bean module to achieve this. very simple. See this [link|http://wiki.sdn.sap.com/wiki/display/XI/File-RFC-File(Without%20BPM)]
In the sender SOAP channel you have to configure first request response bean, second callsapadapter and third onewayresponse bean. Refer this link. Simply follow file sender configuration for your soap sender or RFC sender.
Note: one receiver agreement , one receiver determination, one interface determination. only two receiver channels one jdbc and one file.
2) You can create SOAP to File asynchronous. Using quality of service EO and creating service interface asynchronous mode. In the mapping area do JDBC lookup. If your version is 7.1 then this lookup is available. This is pretty simple no need to do async to sync pattern.
Hope that helps. -
Async Sync Bridge without BPM (Proxy-Soap-Idoc)
Hi,
I have read some blogs how to do the Async Sync Bridge without BPM for JMS adapters. I have a requirement that I am getting a Async Proxy message to PI and then PI makes Sync Soap call then the result need to send through the Idoc adapter.
Proxy - Soap- Idoc
Here Proxy is a sender so no adapter required in the Config and also Soap is java based adapter and Idoc adapter is a ABAP based so I am not sure this is possible but I just wanted to check with you.
Please let know if this is possible or not?
PI 7.1 with EHP1
Thanks,
Laxman
Edited by: Laxman Molugu on Oct 14, 2010 2:15 PMThe mapping programm can be defined as a user defined function. As sample of mine is "getGoogle()", which is doing some kind of address validation. The input parameter URL[0] contains source address. For that you need to import:
org.apache.commons.logging.*;
org.w3c.dom.*;
javax.xml.parsers.*;
org.xml.sax.SAXException;
org.apache.commons.httpclient.*;
org.apache.commons.httpclient.methods.*;
org.apache.commons.codec.*;
org.apache.log4j.*;
Example code for UDF "getGoogle()" is:
String sUrl = "http://maps.google.de/maps/api/geocode/xml?address=" + URL[0] + "&sensor=false";
HttpClient client = new HttpClient();
GetMethod method = new GetMethod(sUrl);
byte[] responseBody = null;
try {
// int statusCode = client.executeMethod(method);
// byte[] responseBody = method.getResponseBody();
// result.addValue(new String(responseBody));
String sResponse = "initial";
int statusCode = client.executeMethod(method);
responseBody = method.getResponseBody();
ByteArrayInputStream bis = new ByteArrayInputStream(responseBody);
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder db = factory.newDocumentBuilder();
Document doc = db.parse(bis);
doc.getDocumentElement().normalize();
NodeList nodeLst = doc.getElementsByTagName("formatted_address");
Node formAdr = nodeLst.item(0);
NodeList nlFormAdr = formAdr.getChildNodes();
sResponse = ((Node) nlFormAdr.item(0)).getNodeValue();
// Deal with the response.
result.addValue(sResponse);
} catch (Exception e) {
result.addValue(e.toString() + "######## exhrenda - googleResponse:############### URL=" + sUrl+"###########"+new String(responseBody));
} finally {
// Release the connection.
method.releaseConnection(); -
Correlation and Async/Sync Communication using JMS adapter without BPM
Hello
1. Pls explain with simple example docs/links --- Correlation
2. Async/Sync Communication using JMS adapter without BPM
If i see blog --- If I go with blog --- /people/sudheer.babu2/blog/2007/01/18/asyncsync-communication-using-jms-adapter-without-bpm-sp-19
Pls explain --- Correlation Settings, select JMSMessageID for the XI Conversation ID.
Pls explain -- Correlation Settings, select XI Conversation ID as jMSCorrelationID.
Can you pls explain me this example with JMSMessageID and JMSCorrelationID context
RegardsHi Henry,
For Correlation, please go through the below link.
/people/sravya.talanki2/blog/2005/08/24/do-you-like-to-understand-147correlation148-in-xi
Sync / Async Bridge communication using JMS : http://help.sap.com/saphelp_nw04s/helpdata/en/45/20d251c20a0732e10000000a155369/frameset.htm
Sync / Async communication without BPM in JMS : /people/venkataramanan.parameswaran/blog/2007/01/18/syncasync-communication-in-jms-adapter-without-bpm-sp19
/people/henrique.pinto/blog/2007/08/02/syncasync-scenarios-without-bpm
Hope these help
Regards
Kiran.. -
Async/Sync Communication using JMS adapter without BPM
Hello ,
Pls suggest how Async/Sync Communication using JMS adapter without BPM .
In my scenario I have JMS Sender and then RFC/JDBC as Sync and then again JMS receiver
Pls explain the concept of
JMSMessageID and JMSCorrelationID and how to use it by an example.
RegardsHi,
If you have selected JMSMessageID, JMSCorrelationID, or JMSProperty and entered a JMS message ID in these fields, you should see the Remove 'ID:' Marker from JMSMessageIDindicator. Set the indicator.
This is necessary because the JMS specification stipulates that each JMS message ID starts with 'ID'. However, this conflicts with ISO-11578.
- JMSMessageID (Uniqueness Is JMS-Provider-Dependent)
(String) The unique message ID. Note that this is not a required field and can be null. Since the JMS provider might not use your provided message ID, the Connector sets a special property called $jms.messageid after sending a message. This is to insure that the message ID always is available to the user. To retrieve this value use conn.getProperty("$jms.messageid") in your After Add hook.
- JMSCorrelationID (Uniqueness Is JMS-Sender-Dependent)
(String) This header is set by the application for use by other applications.
Hope this will help you.
Regards
Aashish Sinha
PS : reward points if helpful -
Alerts and Error handling in BPM Async/Sync Bridge
Hello All,
I am developing an Async/Sync Bridge in BPM for sending a request from ECC webservice asychronously to a front end application synchronously using BPM Async/Sync Bridge. I get a response from the front end to PI and stays there.
It wont be send back to ECC. What are the possibilities of error handling required in this type of scenario.
Thanks
Deno. I get a response from the front end to PI and stays there.
Then it should mean that the BPM design is faulty...did you have a send step at the end which closes the Async-Sync Bridge by sending the message to original sender?
In SXMB_MONI --> For BPM message processing there will be a link called PE...click it...check the graphic workflow...see till where the message has processed.
error handling
include your Sync send step whithin a Block....this block will have an Exception Branch....in this exception branch you can have your Exception handling logic...like raise alert, cancel process etc.
Regards,
Abhishek.
Maybe you are looking for
-
Hi All, Getting error while applying patch 4440000 cd $AU_TOP/patch/115/driver/u4440000.drv ERROR: Failed: XDOLoader.class on worker 1 Failed: CustMigrationTool.class on worker 2 Failed: XDOLoader.class on worker 3 Failed: XDOLoader.class on worker 4
-
External monitor on MacBook Air looks terrible, recommendations?
I'm a software developer and I want to be able to connect an external monitor to my MacBook Air 11". The Apple store guy recommended a Belkin adaptor so I can connect my HDMI input devices. The connection works, but even at 1080p resolution, there
-
SHEcess innot flowing in excise tab
DEAR EXPERTS While doing invoice verification FOR CLEARING CUSTOMS DUTY SHEcess component is appearing ,but while doing J1IEX to capture excise for IMPORT PO, every thing working fine but For componets CVD ,Shecess On cvd is not flowing
-
Need user exit or BADI for NMM1
Hi, I need user exit/BADI for transaction NMM1. We need to know the material status of material to determine whether to send a Reservation or PR. Presently it is determining depending on material type . Regards, Sekhar Raju.
-
Lookup for 2 domanins in ESB DVM in Oracle BPEL
Hi I need lookup in one DVM but the in condition should be 2 Domains. I explain me: I've a DVM like that: | VALUE | FATHER | CHILD | | 1 | SI | NO | | 2 | NO | NO | | 3 | SI | SI