[
https://issues.apache.org/jira/browse/CAMEL-15233?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen resolved CAMEL-15233.
---------------------------------
Resolution: Fixed
> 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
> Fix For: 2.25.2, 3.5.0, 3.4.2
>
>
> 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)