Package org.deltafi.common.action
Class ActionEventQueue
java.lang.Object
org.deltafi.common.action.ActionEventQueue
Service for pushing and popping action events to a redis queue.
-
Constructor Summary
ConstructorsConstructorDescriptionActionEventQueue(ActionEventQueueProperties actionEventQueueProperties, int poolSize) -
Method Summary
Modifier and TypeMethodDescriptionstatic ActionEventconvertEvent(String element) static ActionInputconvertInput(String element) voidkeys()voidputActions(List<ActionInput> actionInputs, boolean checkUnique) Puts the given action inputs into the appropriate Redis queue(s).voidputResult(ActionEvent result, String returnAddress) Submit a result object for action processingvoidsetHeartbeat(String key) longtakeAction(String actionClassName) Request an ActionInput object from the ActionEvent queue for the specified actiontakeResult(String returnAddress)
-
Constructor Details
-
ActionEventQueue
public ActionEventQueue(ActionEventQueueProperties actionEventQueueProperties, int poolSize) throws URISyntaxException - Throws:
URISyntaxException
-
-
Method Details
-
putActions
Puts the given action inputs into the appropriate Redis queue(s). If thecheckUniqueparameter is set totrue, this method will ensure that no other item with the same 'did' field value already exists in the queue before adding an action input. Note that checking for uniqueness is an expensive operation as it involves scanning the Redis set, which can be slow and resource-intensive, particularly for larger sets. Therefore, it's recommended to use this option only in requeue scenarios. If the conversion of an action input to JSON fails, the method will log an error and skip that input.- Parameters:
actionInputs- a list of action inputs to be queuedcheckUnique- iftrue, the method will check for uniqueness of 'did' field values before queuing an action input; iffalse, the method will queue all action inputs without checking for uniqueness
-
takeAction
public ActionInput takeAction(String actionClassName) throws com.fasterxml.jackson.core.JsonProcessingException Request an ActionInput object from the ActionEvent queue for the specified action- Parameters:
actionClassName- Name of action for Action event request- Returns:
- next Action on the queue for the given action name
- Throws:
com.fasterxml.jackson.core.JsonProcessingException- if the incoming event cannot be serialized
-
putResult
public void putResult(ActionEvent result, String returnAddress) throws com.fasterxml.jackson.core.JsonProcessingException Submit a result object for action processing- Parameters:
result- ActionEventInput object for the result to be posted to the action queue- Throws:
com.fasterxml.jackson.core.JsonProcessingException- if the outgoing event cannot be deserialized
-
takeResult
public ActionEvent takeResult(String returnAddress) throws com.fasterxml.jackson.core.JsonProcessingException - Throws:
com.fasterxml.jackson.core.JsonProcessingException
-
convertEvent
public static ActionEvent convertEvent(String element) throws com.fasterxml.jackson.core.JsonProcessingException - Throws:
com.fasterxml.jackson.core.JsonProcessingException
-
convertInput
public static ActionInput convertInput(String element) throws com.fasterxml.jackson.core.JsonProcessingException - Throws:
com.fasterxml.jackson.core.JsonProcessingException
-
setHeartbeat
-
drop
-
keys
-
size
-