The Rebound is in-build feature so all you have to do is use it in your component creation.
In order to cause a rebound you need to emit rebound event with a cause as a second argument. The cause may be an Error or a String with a description of the cause.
The basic principle and syntax could be written following examples presented here.
Here is how to implement Rebound in Node.js code:
exports.process = processTrigger;
function processTrigger(msg, cfg){
var that = this;
that.emit('rebound', new Error('Rebound reason'));
that.emit('end');
}
Here is an example of Rebound feature usage in Commercetools component component action called addVariants:
function addVariant(productId, payload) {
if (!productId) {
console.log('No product with masterVariantSku %s found.', masterVariantSku);
return self.emit('rebound', 'No product with masterVariantSku' + masterVariantSku + 'found.');
}
function emitData(response) {
self.emit('data', response.body);
}
return client.products
.byId(productId)
.update(payload)
.then(emitData);
}
Here is how to implement the Rebound feature in the component code written in Java String
:
package io.elastic.demo;
import io.elastic.api.Component;
import io.elastic.api.EventEmitter;
import io.elastic.api.ExecutionParameters;
public class ReboundingComponent extends Component {
public ReboundingComponent(EventEmitter eventEmitter) {
super(eventEmitter);
}
@Override
public void execute(ExecutionParameters parameters) {
this.getEventEmitter().emitRebound("Rebound for a reason!");
}
}
Here is how to do with Java Exception
:
package io.elastic.demo;
import io.elastic.api.Component;
import io.elastic.api.EventEmitter;
import io.elastic.api.ExecutionParameters;
public class ReboundingReasonExceptionComponent extends Component{
public ReboundingReasonExceptionComponent(EventEmitter eventEmitter) {
super(eventEmitter);
}
@Override
public void execute(ExecutionParameters parameters) {
this.getEventEmitter().emitRebound(new RuntimeException("Rebound"));
}
}