In this blog post I would like to share my knowledge on “When to use Webhook”
According to my knowledge you simply should not configure Webhook in Event Mesh
When you should not use (Not recommended) Event Mesh Webhook
If consumer application supports AMQP, MQTT protocols then go for AMQP, MQTT communication .
For example SAP Cloud Integration iflows supports AMQP Adapter ,
BTP CAP Supports AMQP communication protocol
JAVA also supports AMQP connection so in these cases you should not create Webhook
If consumer does not supports AMQP then go for Webhook
For example you have scenario of Third party integration then go for Webhook
When you should use (recommended) Event Mesh Webhook
The webhooks are used if the consumer application is not supporting any native messaging protocol like AMQP or MQTT. As such the consumer can’t act as a client and subscribe to EM.
As a solution the consumer can provide a REST endpoint to which you can POST events. This is the endpoint you need to provide for the webhook configuration. EM itself takes the role of the consumer and pushes any incoming message to the configured REST endpoint.
if your API work with Postman, they should also work with EM webhook
Why should I use Webhook
In Pub-Sub scenario : Event mesh don’t know its clients. For example consumer apps like CI Iflow , BTP CAP APP in charge of the flow control… these consumers responsible to creates the connection and subscribes to event mesh. Client Listing to Event Mesh.
When application does not supports AMQP , MQTT protocols & your third party app has requirement to receive message form Event Mesh Queue I,e your APP wants data sent to a certain URL when something event happens in provider .
In Web hook scenario Event Mesh needs to know its consumer & invoke third part Rest API with consumer provided credentials
I would suggest you can also refer blog post : https://blogs.sap.com/2020/05/06/cloud-foundry-enterprise-messaging-webhooks-%F0%9F%93%A8/ by Dries Van Vaerenbergh
If you have access to Event Mesh Dashboard cockpit ,
Go to your desired Message Client -> under the “Webhook” tab click on “Create webhook
to create a new configuration
How webhook sends message to consumer Application
The Event Mesh webhook does an HTTP POST (mor or less) in real time when an event arrives in the queue
A webhook subscription notifies the receiving application when an event is triggered. The data is sent through HTTP using a POST request to the receiving application that handles the data. The exchange of data is done through a webhook URL. A webhook URL is configured by the receiving application. The data sent to the webhook URL is known as payload. When an event is triggered, an HTTP POST payload is sent to the webhook URL.
How consumer APP knows Event Mesh Triggered Webhook & sends message
It depends on logic inside your REST API i.e as soon as REST API triggered by BTP Event Mesh WebHook.Your API logic logs/business process is evidence 😊
What are Authentication option supported by Webhook
Webhooks supports basic authentication, OAuth 2.0 authentication, and no authentication are supported. I,e your third Party Rest API should provide credentials with supported auth types (Basic, oAuth )
The authentication applies to both handshake and message delivery calls. For OAuth 2.0 client credentials protected webhooks, the token URL is called with an HTTP POST method and client credentials are sent in a basic authentication header
Is there any option to Edit Web hook ?
As of now not possible to Edit Webhook configuration , rather you can delete & re-create.
What are trigger handshake, pause, resume options
Trigger : This will trigger handshake
Pause : Pause the webhook i.e active
Resume : Resume the webhook that was paused before
Can I see History of Handshake
Event Mesh Dashboard provide an option to view History details