Skip to main content

DevOps operations

The Sequential Inbox lets operators intervene on stuck messages and sequence instances. Write operations are asynchronous: they set a pending_action in the database, and a scheduled job processes it in batches. The default scheduling intervals and batch sizes are configurable (see the pending-actions properties in the Configuration reference).

Supported actions

Message actions

Set on the sequenced_message.pending_action column (enum SequencedMessagePendingAction):

ActionDescription
CONSUMEProcess the message now, regardless of its current state
EXPIREMark the message as consumed without running the handler

Sequence instance actions

Set on the sequence_instance.pending_action column (enum SequenceInstancePendingAction):

ActionDescription
CONSUME_ALLProcess all currently buffered messages of the instance immediately
CLOSEClose the instance without processing remaining buffered messages

A pending action can be written directly via SQL, or via the REST API below.

REST API (optional module)

The REST API is not enabled by default. Add the jeap-messaging-sequential-inbox-rest-api dependency to expose it. Endpoints are under /api and protected with jEAP semantic roles:

  • Read operations require the sequentialinbox view role.
  • Write operations require the sequentialinbox write role.
Method & pathRoleDescription
GET /api/sequences?queryType=EXPIREDviewList fully expired sequence instances (paged: pageNumber, pageSize)
GET /api/sequences?queryType=EXPIRINGviewList instances past 75% of their retention period
GET /api/sequences/{sequenceName}/{contextId}viewGet an instance with its sequenced and buffered messages
PUT /api/sequences/{sequenceInstanceId}/pending-action?pendingAction=CLOSE|CONSUME_ALLwriteSchedule a pending action on a sequence instance
PUT /api/messages/{sequencedMessageId}/pending-action?pendingAction=CONSUME|EXPIREwriteSchedule a pending action on a message

Write endpoints only set the pending action; the scheduler performs the work on its next run.