[ 
https://issues.apache.org/jira/browse/CAMEL-15233?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17149742#comment-17149742
 ] 

Edgar Chernick edited comment on CAMEL-15233 at 7/1/20, 11:34 PM:
------------------------------------------------------------------

Hi guys, I've tried fixing the issue myself here 
https://github.com/apache/camel/compare/master...edgarc-ciandt:master. Would 
you guys mind taking a look and code reviewing it ?

I have deleted the CometDReplayExtension class and used another implementation 
of it from 
https://github.com/forcedotcom/EMP-Connector/blob/master/src/main/java/com/salesforce/emp/connector/ReplayExtension.java

I have also created some unit tests to cover it.

Another question. I would need to have this fixed on 2.25, do you guys think 
it's possible or the fix will probably be applied to the latest version only ?


was (Author: edgarc):
Hi guys, I've tried fixing the issue myself here 
https://github.com/apache/camel/compare/master...edgarc-ciandt:master. Would 
you guys mind taking a look and code reviewing it ?

I have deleted the CometDReplayExtension class and used another implementation 
of it from 
https://github.com/forcedotcom/EMP-Connector/blob/master/src/main/java/com/salesforce/emp/connector/ReplayExtension.java

I have also created some unit tests to cover it.

Another question. I would need to have this fixed on 2.25, do you guys think 
it's possible or the fix will be applied to the latest version only ?

> camel-salesforce - CometDReplayExtension does not keep replayId for each 
> message/channel
> ----------------------------------------------------------------------------------------
>
>                 Key: CAMEL-15233
>                 URL: https://issues.apache.org/jira/browse/CAMEL-15233
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-salesforce
>            Reporter: Edgar Chernick
>            Priority: Major
>
> CometDReplayExtension class try to read the replayId from the message by 
> doing 
> {code}
> final Object value = message.get(EXTENSION_NAME);
> {code}
> However, the replayId (based on this 
> [https://developer.salesforce.com/docs/atlas.en-us.api_streaming.meta/api_streaming/using_streaming_api_durability.htm])
>  is actually within data -> event -> replayId.
>  By doing the following (the same thing the salesforce consumer does 
> https://github.com/apache/camel/blob/master/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceConsumer.java#L250)
> {code}
> final Map<String, Object> data = (Map<String, Object>) message.get("data");
> final Map<String, Object> event = (Map<String, Object>) data.get("event");
> final Object value = event.get("replayId");
> {code}
> I was able to properly fetch the replayId from the message.
>  Since the current version does not do this properly, If the component loses 
> the connection and has to subscribe again it will use the replayid value from 
> the endpoint which it will be outdated if any message was read before the 
> connection failure.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to