<commit_before># Xare

Xare is an integration framework build on top of vert.x. Currently, it is in the very early stages with only very few EIPs implemented.

Xare allows routes to be deployed as Vert.x worker verticals, thus running as micro-services, completely independently of one another. The key advantage is that routes can be added, removed and edited on the fly, without downtime and without affecting the rest of the system.


## Endpoints

Routes communicate with the world and each other through endpoints. Once deployed, the route listens to messages received by its incoming-endpoint, and can pass messages on through one or more outgoing endpoints.

Currently only one type of Endpoints is implemneted, namely `direct-endpoint`.
This type of endpoints receives or sends messages directly from or to the Vert.x `EventBus`. 

## Enterprise Integration Patterns (EIPs)

A goal of this project is to implement as many of the Enterprise Integration Patterns from the book by <NAME> and <NAME> as possible.
Currently the following EIPs are implemented.

*   Splitter: splits an array into single items and passes them on to the next node.
*   Filter: only passes packets on that fulfill a given predicate.


### Next EIPs:

* Choice (Message Router)
* Aggregator


## Selectors

A selector can be used by route nodes to select the part of a packet that is to be processed by the node. A selector can be configured by setting an expression language (currently only JsonPath is supported) and a selection expression.
In the example below, the splitter attempts to select a books list, while the logger node the splitters sub-route selects the book title to be logged out.

## Route Configuration

Route Configuration can be done either programmatically or using JSON. The following is an example of a route containing a splitter node and two logger nodes.
The route starts with a direct endpoint that listens on the EventBus on the address `address-0`.
Outgoing messages from the route are sent out on the EventBus to the addresses `route-output` and `sub-route-output`.


```
{  
  "name":"the-route",
  "from":{  
    "type":"endpoint",
    "address":"address-0",
    "direction":"incoming",
    "endpointType":"direct"
  },<commit_msg>minor modifiactions<commit_after># Xare

Xare is an integration framework build on top of vert.x. Currently, it is in the very early stages with only very few EIPs implemented.

Xare allows routes to be deployed as Vert.x worker verticals, thus running as micro-services, completely independently of one another. The key advantage is that routes can be added, removed and edited on the fly, without downtime and without affecting the rest of the system.


## Endpoints

Routes communicate with the world and each other through endpoints. Once deployed, the route listens to messages received by its incoming-endpoint, and can pass messages on through one or more outgoing endpoints. \n

Currently only one type of Endpoints is implemneted, namely `direct-endpoint`.
This type of endpoints receives or sends messages directly from or to the Vert.x `EventBus`. \n

Route have a single incoming endpoint but can have multiple outgoing ones, if there are sub-routes.

## Enterprise Integration Patterns (EIPs)

A goal of this project is to implement as many of the Enterprise Integration Patterns from the book by <NAME> and <NAME> as possible.
EIPs are implemented as `Nodes` that make up a route. \n
Currently the following EIPs are implemented.

*   Splitter: splits an array into single items and passes them on to the next node.
*   Filter: only passes packets on that fulfill a given predicate.

### Sub-route Nodes

Nodes like filter and splitter that pass only part of incoming packets on the next node in the route start a sub-route to process the packets they pass on. This way the main route is allowed to process all the complete packets if needed.

### Next EIPs:

* Choice (Message Router)
* Aggregator


## Selectors

A selector can be used by route nodes to select the part of a packet that is to be processed by the node. A selector can be configured by setting an expression language (currently only JsonPath is supported) and a selection expression.
In the example below, the splitter attempts to select a books list, while the logger node the splitters sub-route selects the book title to be logged out.

## Route Configuration

Route Configuration can be done either programmatically or using JSON. The following is an example of a route containing a splitter node and two logger nodes.
The route starts with a direct endpoint that listens on the EventBus on the address `address-0`.
Outgoing messages from the route are sent out on the EventBus to the addresses `route-output` and `sub-route-output`.


```
{  
  "name":"the-route",
  "from":{  
    "type":"endpoint",
    "address":"address-0",
    "direction":"incoming",
    "endpointType":"direct"
  },
{'fraction_non_alphanumeric': 0.053252032520325204, 'fraction_numerical': 0.0008130081300813008, 'mean_word_length': 4.2631016042780745, 'pattern_counts': {'":': 12, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2027942', 'n_tokens_mistral': 1234, 'n_tokens_neox': 1192, 'n_words': 736}