Welcome to the new Gigaspaces XAP forum. To recover your account, please follow these instructions.

Ask Your Question
1

Blocking error on consuming events from partitioned space

Hi,

We need to implement a blocking event polling container on a partitioned space, after adding @SpaceRouting to the event SpaceEntry we are seeing the error below.

What is the correct way to implement a blocking polling container for events on a partitioned remote space?

For our nonblocking event listener the error is resolved by adding the code below, but we're unsure how to resolve the issue for blocking calls: @ReceiveHandler ReceiveOperationHandler receiveHandler() { AbstractFifoGroupingReceiveOperationHandler handler = new SingleTakeReceiveOperationHandler(); handler.setNonBlocking(true);

SEVERE: [blockedEventListenerContainer] Setup of event listener invoker failed - trying to recover java.lang.IllegalArgumentException: Broadcast is not supported for Read/Take Operations with timeout greater than 0. (Type=com.xyz.event.EventSpaceWrapper ,routing property=id) at com.gigaspaces.internal.client.spaceproxy.operations.ReadTakeEntrySpaceOperationRequest.getPartitionedClusterExecutionType(ReadTakeEntrySpaceOperationRequest.java:113)

Regards,

Nick

asked 2014-05-08 07:52:35 -0600

gordonn gravatar image
edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
0

It looks like you are specifying a timeout on a read or take operation against a partitioned space without specifying a routing field value.

Could you explain in a bit more detail what you need to do?

Regards,

Patrick

answered 2014-05-08 08:21:55 -0600

Patrick gravatar image
edit flag offensive delete link more

Comments

Hey Patrick,

We are using the XAP Elastic ESM grid in a cluster and have multiple PUs with transactional event polling containers consuming events from a space. We are concerned an event could be consumed by more than one PU's polling container so we would like to lock/block requests each time we consume the event.

The Space entity has been marked with @SpaceRouting as it's a partitioned space and because of this we are hitting restrictions with the timeout (which is left at the default of -1)

The trigger method deploys using the code from the Polling container wiki ( http://wiki.gigaspaces.com/wiki/displ... ), but i'm unsure if blocking/locking is enabled using the Trigger instead of @ReceiveHandler

@EventDriven @Polling @TransactionalEvent public class SimpleListener {

@TriggerHandler
TriggerOperationHandler receiveHandler() {
    ReadTriggerOperationHandler triggerHandler = new ReadTriggerOperationHandler();
    return triggerHandler;
}

@EventTemplate
Data unprocessedData() {
    Data template = new Data();
    template.setProcessed(false);
    return template;
}

@SpaceDataEvent
public Data eventListener(Data event) {
    //process Data here
}

}

gordonn gravatar imagegordonn ( 2014-05-08 09:15:46 -0600 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2014-05-08 07:52:35 -0600

Seen: 443 times

Last updated: May 08 '14