Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
showkath_naseem
Product and Topic Expert
Product and Topic Expert
8,628
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

What is Webhook ?


A webhook is a technique used to send HTTP POST notifications to a URL. When an event occurs in a source application, a webhook request is triggered to one of the API endpoints.


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


Why should I use Webhook ?


Webhooks does not require the administrator to manually trigger event & submit a request

Instead, a webhook automatically broadcasts information to third-party systems which can then be used to make event-driven decisions

 

What is difference between Pub/Sub vs 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.

 

In a pub/sub scenario  , providers (message sources) are decoupled from message consumers while in webhooks, the producer via Event mesh is fully aware of the location of the consumer through the webhook URL. i,e in WebHook communication model you need to decide the Target system

 

Webhooks are a very useful method to communicate events,

However The communication model in a webhook is one-to-one, i.e. one producer to one consumer, while in a pub/sub system you can have many producers sending messages to multiple consumers.

 

Use a pub/sub techniques for asynchronously commination  & Webhooks for  synchronous commination

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 to 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 vvdries

 

When you should use (recommended) Event Mesh Webhook ?


Scenario:


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

Webhooks are used for one-way communication from a source application to a destination application(rest API)

What is difference between Webhook vs API ?



Raising the event & notifying consumer via Webhook is not the same as invoking an REST API because Webhooks is a "Event Based API" or “Reverse APIs” which enable real-time communication initiated by the provider application sending the data rather than the one receiving it & consumer notified automatically when an event occurs .

API is not event-based they are request-based ,although real-time is possible with API, it requires an extra configuration ,more resources for real-time updates. You need to decide as per your use case.


How to create Webhook in Event Mesh ?


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.

See  : https://help.sap.com/doc/95ffc07cb5064bc5aaedf3b3172c28b8/Cloud/en-US/enterprise_messaging_en_US.pdf

 

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


 



Thank you for reading this blog post. If you find this material useful, please leave your feedback in the comments section below.

Feel free to also 'Like' ,'Share' , 'Follow' me to get new updates.
5 Comments