cancel
Showing results for 
Search instead for 
Did you mean: 

Delta Load and Outbound Queues Problem Mobile 7.1

Former Member
0 Kudos

Hi Friends,

I have questions about the scenarios that we've implemented concerning the synchronization of messages between the backend and mobile devices. The way in which we are feeding the CDS tables (DOE tables) is using delta load background jobs with a hourly intervals between each execution. For the extract we have configured the DOE for automatic extracting (configuring DO_SYNC_EXTRACT parameter), but outbound queues grows with significant messages. We don´t understand why if we are executing delta loads, all the messages (not just the updates or deltas) are charged on the outbound queue? Have some suggestions to us? What about backend push, could be a possible solution to our problem?

Regards,

David Faustini

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi,

I think there are multiple factors that leads to too many messages in device outbound.

Incase of update messages from backend, its a transaction message that reaches DOE . This means there is no bulk handling possible incase of update messages.

Another thing to note is that with the configuraiton 'DO_SYNC_EXTRACT' switched ON , each of the data object instances that has to be sent to devices will form seperate message in outbound.

That might be the reason it gives a feeling that device outbound is populated with too many messages.

According to DOE semantics only delta changes will be processed in DOE and sent to devices.

1) In case delta load scenario ,backend push seem to be more performant. If mostly inserts are sent from backend , then semantic compression option might help in bulk processing.

2) DO_SYNC_EXTRACT could be switched off and extract job could be scheduled from Tcode : sdoe_bg_job_monitor

per dataobject (for all devices) and in this case bulk factor will be applied for all new instances (Task 'I').

Regards,

Liji

Answers (2)

Answers (2)

Former Member
0 Kudos

Hi,

As you have configured your data objects as "SYNC_EXTRACT_ENABLED", every change in the object instances will result into a new message in the outbound queue.

Instead you can choose to have them as non-sync extract enabled where in these instances will be waiting for the extract to be triggered.

There are multiple ways in which this extract can be triggered like,

1. Scheduled job after regular interval

2. Triggering the extract whenever physical device synchronizes.

This will avoid un-necessary data in the outbound queue of the device.

Additionally, if the changes in the backend are not so critical, you can go for "Semantic Compression" option as well where all the changes from the backend system are clubbed as a unit and then pushed to DOE at specified interval.

Regards,

Ramanath.

Former Member
0 Kudos

Hi Dhana/Ramanath,

I understand the logic for delta loads and exctracts. Look at the test we made on the server, the scenario consist on a service order with 530 headers and 5 child nodes:

-First test: We've configured a delta load job every one hour, and check the parameter SYNC_EXTRACT_ENABLED for this data object. The outbound queue refreshing is turned off (Don't refresh queue). After the first delta load my outbound queue grow with 1000 messages, if a don't sync my device and make another delta load the messages grow until 2130, but I don't understand why because we don't made changes on the backend DATA.

-Second Test: We've configured a delta load job every one hour, and un-check the parameter SYNC_EXTRACT_ENABLED for this data object. The outbound queue refreshing is turned on (Synchronously for the required DO). After the first delta load my outbound queue did not grow (that is ok) and the extract queue only grows with 230 messages, if a don't sync my device and make another delta load the messages did not grow (that is ok).

Why in the first test the outbound queue always grow???

Regards,

David Faustini

Former Member
0 Kudos

Hi,

First case where outbound grows without any changes from BE is not the expected behavior definitely.

Along with the above test, may be one more thing could be checked in DOE message monitoring.

Copy any sync key(extractkey) and perform a search for this key in the message monitoring to find how many messages are processed in DOE for this key from BE to DOE direction.

Check the contents of this message incase multiple messages are resulted.

Incase they are same, then I guess some issue to be resolved. But if you find some changes in the messages, may be some changes are pulled from backend during second time load was performed.

Regards,

Liji

Former Member
0 Kudos

Hi

well the difference between data when the data object is sync_extract_enabled versus non synch_extract_enabled is due to content merging during extract process. In case, data object is sync_extract_enable, then any instance change identified for the device will be immediately put into device queue. In the non synch_extract_enabled, changed content for instance from last extract gets merged and put in device queue.

The difference between enabling data object synch_extract versus configuring refresh queue is like this:

a- configure refresh queue options comes when the device connects for synchronization. based on the option selected, the extract gets triggered synchronously or asynchronously. As is possible that device is still synchronizing when extract is putting content in device queue, some of the content may get consumed by device.

b- data synch extract , automatically puts data in device's queue whenever any relevant instance change is identified for device.

You can check the kind of data change, how many message are coming with such backend changes and then can verify the count.

regards

pradeep

Former Member
0 Kudos

Hi,

Delta downloads bring changes to CDS and outbound queues only if there are any chenges in backend only.

1) If you have frequent changes in backend and if you want this changes to reach devices in short interval of time, then delta load job and extract job scheduled by you is correct, assuming devices will sync very often. You can also go for backend key push(your adapter should be backend triggered) in this case.

2) But if changes are not critical and you dont want your devices informed very often, then you can change the delta load job scheduling time interval. Say once in a day. This will be an ideal way of doing it if your devices will not sync very often.

3) You can also extend your extract job time which will stop filling your outbound queue un necessarily.

Hope this is helpful

Regards,

Dhana