Dear friends,

Thank you all for your support.

Let me share the code segment with you:

*How to define ClientCache*

ClientCache cache = new ClientCacheFactory()
.addPoolLocator(IP, Port)
.setPoolSubscriptionEnabled(*true*)
.create();


*and how to define/register the listener:*


Region<String, Object> this.OperationRegion = cache
.<String, Object>createClientRegionFactory(ClientRegionShortcut.PROXY)
.addCacheListener(new OperationCacheListener())
.create("Operation");

OperationRegion.registerInterest("*ALL_KEYS*",  InterestResultPolicy.
*KEYS_VALUES*);


*Where OperationCacheListener is as follows:*

import java.util.Properties;

import com.gemstone.gemfire.cache.Declarable;
import com.gemstone.gemfire.cache.EntryEvent;
import com.gemstone.gemfire.cache.util.CacheListenerAdapter;

import org.eclipse.jetty.util.thread.ThreadPool;


public class OperationCacheListener extends CacheListenerAdapter implements
Declarable {

public void afterCreate(EntryEvent event) {


}


public void afterUpdate(EntryEvent event)

{


}

}


On Mon, May 23, 2016 at 8:00 PM, Ali Koyuncu <[email protected]> wrote:

> Thank you!
> Let me check all of them, and let you know about the result.
>
> On Mon, May 23, 2016 at 7:52 PM, John Blum <[email protected]> wrote:
>
>> An updated link Spring support for Apache Geode is here...
>>
>>
>> https://spring.io/blog/2016/04/29/spring-data-geode-1-0-0-apache-geode-incubating-m2-released
>>
>> Cheers!
>>
>> On Mon, May 23, 2016 at 9:48 AM, Udo Kohlmeyer <[email protected]>
>> wrote:
>>
>>> Hi there Ali,
>>>
>>> In order to enable subscriptions on the client pool you need to set this
>>> property on your <pool> settings in your client's cache.xml file.
>>>
>>> Can you confirm that you have the following setup.
>>>
>>>    1. A running Locator and server(s)
>>>    2. A region set up on the server
>>>    3. A configured client using
>>>       1. Client cache.xml
>>>       2. the provided Java API
>>>       3. Using Spring Data Gemfire/Geode as described here
>>>       
>>> https://spring.io/blog/2015/06/12/spring-data-gemfire-supports-apache-geode
>>>    4. You have configured the "OperationRegion" on both your server and
>>>    client.
>>>
>>> --Udo
>>>
>>> On 24/05/2016 2:35 am, Ali Koyuncu wrote:
>>>
>>> Udo, hi,
>>>
>>> Here new questions come --- I am a newbie to Geode:
>>>
>>>
>>>    1. How to set "subscriptions-enabled=true" on the client pool? How
>>>    to enable subscription?
>>>    2. Do you have a sample code on events?
>>>
>>> Thanks.
>>>
>>> On Mon, May 23, 2016 at 7:28 PM, Udo Kohlmeyer <[email protected]>
>>> wrote:
>>>
>>>> Hi there Ali,
>>>>
>>>> When you say "it does not fetch any event" do you mean you are
>>>> inserting/updating data entries on the server and the client does not get
>>>> notified? Or are you making changes on the client and not being notified?
>>>>
>>>> CacheListeners or CacheWriters should fire when you are making your
>>>> local region (in your case client).
>>>>
>>>> In order to have events propagated from the server to the client you
>>>> need to use "registerInterest" on your client region. This can be turned 
>>>> on:
>>>>
>>>>    1. enable subscriptions on your client pool, by setting
>>>>    "subscriptions-enabled=true"
>>>>    2. On the client region set
>>>>    "operationRegion.registerInterest("ALL_KEYS",
>>>>    InterestResultPolicy.KEYS_VALUES)
>>>>
>>>> After this any changes on the server will be propagated to your client.
>>>>
>>>> Is this the functionality you are looking for?
>>>>
>>>> --Udo
>>>> On 24/05/2016 2:00 am, Ali Koyuncu wrote:
>>>>
>>>> John,
>>>>
>>>> My code as as follows:
>>>>
>>>> this.listener = new OperationCacheListener();
>>>> this.OperationRegion = cache
>>>> .<String, iEvent>createClientRegionFactory(ClientRegionShortcut.PROXY)
>>>> .initCacheListeners(new CacheListener[]
>>>>    {this.listener})
>>>> .addCacheListener(this.listener)
>>>> .create(OperationRegionName);
>>>>
>>>>
>>>> where;
>>>>
>>>> private Region<String, iEvent> OperationRegion;
>>>>
>>>> private ClientCache cache;
>>>>
>>>> Despite I registered the listener, it doesn't fetch any event.
>>>>
>>>> Is the above code segment true?
>>>>
>>>> On Mon, May 23, 2016 at 6:49 PM, John Blum < <[email protected]>
>>>> [email protected]> wrote:
>>>>
>>>>> Hi Ali-
>>>>>
>>>>> You need to register the CacheListener on the *Region* in which the
>>>>> data access operations/entry events (gets/puts/etc) are taking place.  
>>>>> E.g.
>>>>> ...
>>>>>
>>>>> ClientRegionFactory operationRegionFactory =
>>>>> clientCache.createClientRegionFactory(ClientRegionShortcut.PROXY);
>>>>>
>>>>> *operationRegionFactory.addCacheListener(new
>>>>> OperationCacheListener());*
>>>>> operatonRegionFactory. ...
>>>>>
>>>>> Region operation = operationRegionFactory.create("Operation");
>>>>>
>>>>> -John
>>>>>
>>>>>
>>>>> On Mon, May 23, 2016 at 1:24 AM, Ali Koyuncu < <[email protected]>
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Dear all,
>>>>>>
>>>>>> I created a region named Operation.
>>>>>>
>>>>>> What I want to do is to get notified upon creating or updating record
>>>>>> in this region.
>>>>>>
>>>>>> Following are my code segments:
>>>>>>
>>>>>> *Listener (named OperationCacheListener):*
>>>>>>
>>>>>>   public void afterCreate(EntryEvent event) {
>>>>>>
>>>>>>    iEvent message = (iEvent) event.getNewValue();
>>>>>>
>>>>>>    if(message instanceof CmdStartCSS)
>>>>>>    {
>>>>>>     logger.debug("[OperationCacheListener][Command: Start][Key:
>>>>>> {}]");
>>>>>>
>>>>>>     try {
>>>>>>     CmdStartCSS command = (CmdStartCSS) event.getNewValue();
>>>>>>     DialManager.getInstance().Start(command);
>>>>>>     }
>>>>>>     catch(Exception e)
>>>>>>     {
>>>>>>     logger.error("[OperationCacheListener][Start][{}][Exception:
>>>>>> {}]", e.getClass().getSimpleName(), e.getMessage());
>>>>>>     }
>>>>>>
>>>>>>    }
>>>>>>    else if(message instanceof CmdStopCSS)
>>>>>>    {
>>>>>>     logger.debug("[OperationCacheListener][Command: Stop][Key: {}]");
>>>>>>     try {
>>>>>> DialManager.getInstance().Stop();
>>>>>> } catch (Exception e) {
>>>>>> //
>>>>>> }
>>>>>>    }
>>>>>>
>>>>>>   }
>>>>>>
>>>>>>   public void afterUpdate(EntryEvent event)
>>>>>>   {
>>>>>>  System.err.println("Region entry was updated.");
>>>>>>   }
>>>>>>
>>>>>>
>>>>>> *How I initiate the listener:*
>>>>>>
>>>>>> this.listener = new OperationCacheListener();
>>>>>> this.OperationRegion = cache
>>>>>> .<String,
>>>>>> iEvent>createClientRegionFactory(ClientRegionShortcut.CACHING_PROXY)
>>>>>> .initCacheListeners(new CacheListener[]
>>>>>>    {this.listener})
>>>>>> .create(OperationRegionName);
>>>>>>
>>>>>>
>>>>>> *PROBLEM:*
>>>>>>
>>>>>> When I am to create/update a record in this region, my events are not
>>>>>> triggered.
>>>>>>
>>>>>> Could you please check and tell me where I am wrong or missing? (If
>>>>>> you have a sample code on this matter, I will be glad).
>>>>>>
>>>>>> Thank you in advance.
>>>>>>
>>>>>>
>>>>>> --
>>>>>>
>>>>>> Saygılarımla, with my warm regards,
>>>>>>
>>>>>> Ali KOYUNCU
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> -John
>>>>> 503-504-8657
>>>>> john.blum10101 (skype)
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>>
>>>> Saygılarımla, with my warm regards,
>>>>
>>>> Ali KOYUNCU
>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>>
>>> Saygılarımla, with my warm regards,
>>>
>>> Ali KOYUNCU
>>>
>>>
>>>
>>
>>
>> --
>> -John
>> 503-504-8657
>> john.blum10101 (skype)
>>
>
>
>
> --
>
> Saygılarımla, with my warm regards,
>
> Ali KOYUNCU
>



-- 

Saygılarımla, with my warm regards,

Ali KOYUNCU

Reply via email to