My team has recently been working on putting together a Spring Integration system that uses, as an error channel, a GemfireMessageStore-backed queue channel. Our initial attempts were to use a PROXY (failed miserably - all messages were dropped.) We then attempted a CACHING_PROXY. In the CACHING_PROXY model, the queue would work until the system failed, then when the system was brought back up, all of the messages resident in the GemfireMessageStore were subsequently dropped - unless we wrote to the GemfireMessageStore before it had emptied itself!)
It now appears that if we run with our GemfireMessageStore set to a LOCAL_PERSISTENT, things work out okay. However, this isn't really what we want to have happening. Ideally, we'd want the PROXY setup, and if that wouldn't work we'd want the CACHING_PROXY setup.
Which part of the picture are we not understanding, here?
Here are the relevant parts of the setup:
The 'int' ns is, of course, Spring Integration, and 'gfe' is Gemfire.Code:<bean id="gemfireMessageStore" class="org.springframework.integration.gemfire.store.GemfireMessageStore"> <constructor-arg ref="MessageStoreCache"/> </bean> <int:channel id="failedDeliveryMessageStoreQueueChannel"> <int:queue message-store="gemfireMessageStore"/> </int:channel> <gfe:client-cache id="MessageStoreCache" pool-name="MessageStorePool"/> <gfe:client-region id="messageStoreRegion" cache-ref="MessageStoreCache" shortcut="LOCAL_PERSISTENT"/> <gfe:pool id="MessageStorePool" subscription-enabled="true"> <gfe:server host="localhost" port="40404"/> </gfe:pool>
Any help would be greatly appreciated.