Hi there,
I am using the AMQP plugin to work with RabbitMQ based queues. I have the following scenario based on the standard AMQP Subscribe template:
while (true) {
//1. Create a trigger
messageTrigger = broker.receiveAsync(queue, 0);
//2. Waiting event
messageTrigger created above
// 3. Process a message
// Pass the message to downstream system for processing
broker.retrieveMessage(messageTrigger);
}
Say we have detected that the downstream system that is supposed to process the message is down. In such a case, I'd like to rollback the dequeued message and stop/exit out of the loop.
I am wondering if it is possible to do a rollback in the above scenario via the vCO AMQP plugin? Thanks.
Hi,
The AMQP plugin works only in auto-acknowledge mode. It was a conscious decision to implement it this way in order to reduce the possibility of user error. After the message is received it is acknowledged by the plug-in and cannot be rolled back.
Is it possible to message-enable your downstream system? If it is also message-driven it can process the request later when it is online. Or maybe you can try resending the already received message? It will be picked up the same workflow and try calling the downstream system again.
Regards,
Hi,
The AMQP plugin works only in auto-acknowledge mode. It was a conscious decision to implement it this way in order to reduce the possibility of user error. After the message is received it is acknowledged by the plug-in and cannot be rolled back.
Is it possible to message-enable your downstream system? If it is also message-driven it can process the request later when it is online. Or maybe you can try resending the already received message? It will be picked up the same workflow and try calling the downstream system again.
Regards,
Thanks that helps. Given the downstream system is not a messaging based system, we could perhaps stash it in a different queue for processing later and turn off this subscriber to prevent picking up any more messages as they cannot be processed anyways.