VMware Cloud Community
ahola
Enthusiast
Enthusiast
Jump to solution

AMQP: Rollback a message that has been dequeued

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.

0 Kudos
1 Solution

Accepted Solutions
jvassev
Contributor
Contributor
Jump to solution

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,

View solution in original post

0 Kudos
2 Replies
jvassev
Contributor
Contributor
Jump to solution

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,

0 Kudos
ahola
Enthusiast
Enthusiast
Jump to solution

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.

0 Kudos