Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 16 Next »

Status

PROGRESS

Priority1
Notecontent in tutorial Extending Functionalities by using System Hooks
AssigneeAntje

Ressources

partly described in Tutorial Extending Functionalities by using System Hooks

Remarks

concept article linking to the respective tutorials

System Hooks, that allow for messaging triggered by function calls under specified conditions.

Table of Contents

Introduction

With an AMQP Hook, messages are sent to a configured messaging system using Advanced Message Queuing Protocol 1.0 (AMPQ). Where and when these messages are sent is defined in the System Hook configuration.

AMQP Hook Configuration

Parameters

The AMQP configuration is located in the amqp key under the systemhooks top-level key. It is represented as a list of one or more System Hooks whose parameters are described in the table below:

Parameter

Type

Description

enable
booleanIs this configuration active/enabled?
predicate
string

Condition that specifies when the system hook is used. Supported scripting languages: Spring Expression Language (SpEL) und Javascript.

type
stringDefines the processing step for which the system hook is to be used.
url
stringAMQP server endpoint, e.g. 127.0.0.1:5672.
user
stringUsername for the AMQP server.
password
stringPassword for the AMQP server.
queue
stringName of the queue to which the messages are written.
bulkSize
integerMaximum bulk size for a message.

Example Configuration

The configuration of an AMQP Hook is shown together with an examplary document import. The AMQP hook should send messages to a messaging system when importing compound documents, to perform an asynchronous full-text indexing (more about asynchronous full-text indexing can be found here). For this purpose,  the following configuration is used. Of course, the messaging system needs to support AMQP 1.0. Any changes to the AMQP Hook configuration require a restart of the API Gateway.

systemHookConfiguration.json
{
    "systemhooks": {
        "amqp": [
            {
                "enable": true,
                "predicate": "spel:(contentStreams != null && contentStreams.size() > 0 && contentStreams[0]['range'] != null && contentStreams[0]['range'].length() > 0) ? true : false",
                "type": "object.insert.document",
                "url": "127.0.0.1:5672",
                "user": "admin",
                "password": "admin_pwd",
                "queue": "lc.textextraction",
                "bulkSize": 10
            }
        ]
    }
}

This configuration has exactly one System Hook, which is an AMQP Hook of the type object.insert.document. It is relevant to the API-Gateway. If the evaluation of the predicate for a document on import results is true (in our example only for compound documents), the API-Gateway sends a message with the metadata of the document to the defined messaging system. In addition, the configuration specifies a bulkSize of 10, i.e. for a batch import of 100 documents matching the predicate, 10 messages with 10 metadata entries per message are written to the queue named lc.textextraction.

Activating the AMQP System Hook

In our example of asynchronous full-text indexing, the API-Gateway is responsible for evaluating the system hook. To apply the configuration, the API-Gateway must be restarted after saving the configuration file. Messages will then be send to the messaging system for the import of compound documents.

Summary

In this article, we covered the AMQP Hook configuration using the example of asynchronous full text indexing. The second type of System Hooks in yuuvis® Momentum is the Webhook.


Read on

System Hooks

Define additional actions triggered by specified events, extend the functionality of yuuvis® Momentum API.

Webhooks

A system hook that extends a function call by an HTTP call under defined conditions.

  • No labels