Implement Agents
A published event will automatically trigger the agents, which have the event assigned as trigger event. The payload provided in the event will be available as input in the agent. Besides that, any kind of logic can be implemented in an agent (e. g. calling another service).
Within the agent implementation, the message key, the message headers and the message timestamp are available and can be used. Both custom headers as well as commonly used headers can be accessed here.
/**
* Agent execution
*/
public async execute(): Promise<void> {
const log = this.util.log;
// Get the payload from the event that triggered the agent
const { property1 } = this.input;
// log message key
log.info(`Message key: ${this.messageKey}`);
// log value of my custom header, wich has a string as value
const strHeaderValue = this.messageHeaders['customHeader1'].toString();
log.info(`Custom header "customHeader1" has value: ${strHeaderValue}`);
// log value of another header, which has Buffer as value
const bufHeaderValue = this.messageHeaders['customHeader2'].toString();
log.info(`Custom header "customHeader2" has value: ${bufHeaderValue}`);
// log value of message timestamp in the format of an ISO String
const msgTime = new Date(this.messageTimestamp);
log.info(`Message timestamp: ${msgTime.toISOString()}`)
// Initialize input for calling another service
const input = this.factory.entity.order.ServiceIdentifier_Input();
// Set the value from the event payload as input value
input.property1 = property1;
// Call service and pass as input the input entity created above
await this.services.order.ServiceIdentifier(input);
}