cancel
Showing results for 
Search instead for 
Did you mean: 

PI message spliting

Former Member
0 Kudos

HI,

We are having PI 7.0 SP18 in our landscape, now we have scenario where we have to integrate with 3rd party web-service in synchronous scenario.

1)     JDBC to SOAP – Synchronous scenario

3rd party is having 1.1 mapping at their side but looking at the performance in JDBC side we need to select 500 records at one time and same need to post to 3rd party web-service using SOAP receiver adaptor and again response need to send back for updation in JDBC (I believe responseonebean can be use for achieving the same)

We are trying to achieve scenario without using BPM where we can split the message n.1 in PI.

Considering the performance factor need your suggestion for the same.

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

Hi,

Check whether the webservice can process multiple requests in a single transaction or need to send only one request in a single transaction...

based on the webservice signature you may have to proceed ...

HTH

Rajesh

Former Member
0 Kudos

Hi Mani,

Please check this blog:

http://scn.sap.com/community/pi-and-soa-middleware/blog/2012/03/22/n1-nm-mappings-not-possible-witho...

You may build jdbc-jdbc scenario where you may call web service using soap lookup.

However this approach is not recommended if you are updating something using web service.

Regards,

Beena.

Former Member
0 Kudos

Hi Beena,

just want to reconfirm, My query is regarding N:1 mapping where we have only one source and one destination system i.e. JDBC will be source and 3rd party webservice will be destination for us. Based on response we need to update back in same database via JDBC. We don't have to store any value during the transmission i.e. KEY value will be part of REQUEST and RESPONSE.

So is there any way through which we can pick up multiple records from JDBC sender and send one by one to receiver SOAP.

Former Member
0 Kudos

Hi Mani,

As I said you may poll on database for 500 records using jdbc sender adapter. Then if you need to send the records one by one, you may use soap lookup in mapping. However you need to send xml as string in request and receive response xml as string. Then you may use xslt mapping to convert string xml to jdbc structure to update the database. Thus you will have just one database select and one database upadte operation but there will be 500 calls in mapping lookup. So it is very important that you need to check the performance of third party web service call as you are going to call it 500 times in mapping.

As suggested by Rajesh, please check with third party if it is possible to handle multiple records.

Jdbc sender ---> Mapping with soap lookup and xslt mapping to map response to receiver jdbc structure---> Jdbc receiver

Other approach could be if database can write the records to file, you may use file content conversion to split the records to multiple messages (using no. of recordsets per message option) and call third party web service using request response and response one way bean so that you can update database.

Please check these links: http://wiki.sdn.sap.com/wiki/display/XI/Using+Request+Response+Bean+Module+in+FILE+Adapter

http://scn.sap.com/thread/1749229

Regards,

Beena.

Former Member
0 Kudos

HI Beena / Rakesh,

We have checked with 3rd party but they can't change the webservice at their end. So i don't have option to handle scenario at my side. As they are claiming that they can handle 900-1000 request in single sec so at their side performance is not an issue.

my worry is only about the performance, because 500 is only a random number which i have mentioned in my initial thread ,as we need to process more than 1 lakh message in a day time but not able to figure out the exact solution through which performance of PI system also can manage.

The problem if i use file or some interim solution which will impact our performance as well processing TAT for each message.

Former Member
0 Kudos

Hi Mani,

Itis  not n:1 scenario. You are going to have one message from JDBC with 500/1000 records and you need to send them to web service one by one. So it is 1:n scenario.

I am not sure if you can use extended interface determination in this case, where you are going to use request-response bean to achieve async-sync behaviour. You may check that.

However in that case also you will have one jdbc sender query to select the records but still there will be multiple queries to update database  as you wont be able to collect all responses.

Why do you dont want to use BPM? This can be easily achieved using it.

Here you will be able to collect all responses and update database using single call.

Regards,

Beena.