Rqueue provides various callbacks and events to hook into message processing and application lifecycles.
Message Processors and Callbacks
Rqueue supports several message processors. These can be used for various purposes, such as setting up tracing contexts, managing transactions, or auditing.
Pre-Execution Processor
The Pre-Execution Processor is invoked before a message handler is called. If the processor returns false, the handler execution is skipped.
class RqueueConfiguration {
private MessageProcessor preExecutorMessageProcessor() {
// return message processor object
}
@Bean
public SimpleRqueueListenerContainerFactory simpleRqueueListenerContainerFactory() {
SimpleRqueueListenerContainerFactory factory = new SimpleRqueueListenerContainerFactory();
MessageProcessor preExecutorMessageProcessor = preExecutorMessageProcessor();
factory.setPreExecutionMessageProcessor(preExecutorMessageProcessor);
return factory;
}
}
Discard Processor
The Discard Processor is called when a message is discarded after exceeding its retry limit.
class RqueueConfiguration {
private MessageProcessor discardMessageProcessor() {
// return message processor object
}
@Bean
public SimpleRqueueListenerContainerFactory simpleRqueueListenerContainerFactory() {
SimpleRqueueListenerContainerFactory factory = new SimpleRqueueListenerContainerFactory();
MessageProcessor discardMessageProcessor = discardMessageProcessor();
factory.setDiscardMessageProcessor(discardMessageProcessor);
return factory;
}
}
Dead Letter Queue Processor
This processor is invoked whenever a message is moved to a dead letter queue.
class RqueueConfiguration {
private MessageProcessor deadLetterQueueMessageProcessor() {
// return message processor object
}
@Bean
public SimpleRqueueListenerContainerFactory simpleRqueueListenerContainerFactory() {
SimpleRqueueListenerContainerFactory factory = new SimpleRqueueListenerContainerFactory();
MessageProcessor deadLetterQueueMessageProcessor = deadLetterQueueMessageProcessor();
factory.setDeadLetterQueueMessageProcessor(deadLetterQueueMessageProcessor);
return factory;
}
}
Manual Deletion Processor
The Manual Deletion Processor is called whenever a message is manually deleted.
class RqueueConfiguration {
private MessageProcessor manualDeletionMessageProcessor() {
// return message processor object
}
@Bean
public SimpleRqueueListenerContainerFactory simpleRqueueListenerContainerFactory() {
SimpleRqueueListenerContainerFactory factory = new SimpleRqueueListenerContainerFactory();
MessageProcessor manualDeletionMessageProcessor = manualDeletionMessageProcessor();
factory.setManualDeletionMessageProcessor(manualDeletionMessageProcessor);
return factory;
}
}
Post-Execution Processor
This processor is called after a message has been successfully consumed.
class RqueueConfiguration {
private MessageProcessor postExecutionMessageProcessor() {
// return message processor object
}
@Bean
public SimpleRqueueListenerContainerFactory simpleRqueueListenerContainerFactory() {
SimpleRqueueListenerContainerFactory factory = new SimpleRqueueListenerContainerFactory();
MessageProcessor postExecutionMessageProcessor = postExecutionMessageProcessor();
factory.setPostExecutionMessageProcessor(postExecutionMessageProcessor);
return factory;
}
}
Events
Rqueue generates two types of Spring Application Events: one for container lifecycle (start/shutdown) and another for job execution status.
Job/Task Execution Events
After a task completes, Rqueue publishes an RqueueExecutionEvent. Applications can listen for this event to get detailed information about job performance and outcomes.
Container Lifecycle Events
When the RqueueListenerContainer starts or stops, it publishes an RqueueBootstrapEvent. This event can be used to perform setup or cleanup operations when the messaging system initializes or shuts down.