19bdfeea69
Change-Id: I03c605dfaa884b6c7aab3e52259855eb2110fac5
111 lines
3.0 KiB
Markdown
111 lines
3.0 KiB
Markdown
Of course, let's integrate everything into a cohesive guide.
|
|
|
|
---
|
|
|
|
## **Using the `exn` Module: A Comprehensive Guide**
|
|
|
|
The `exn` module serves as a connector, enabling communication between various components in a messaging infrastructure. This guide will take you through the basics to advanced usage of the module.
|
|
|
|
### **Overview**
|
|
|
|
- **Core Components:**
|
|
- **Bootstrap**: A foundational class setting up the readiness state.
|
|
- **CoreHandler**: Manages connection start, message reception, and timed tasks.
|
|
- **EXN**: Main connector class initializing connections and configurations.
|
|
|
|
### **Basic Usage**
|
|
|
|
1. **Initialize** the `EXN` class:
|
|
|
|
```python
|
|
connector = connector.EXN('ui', bootstrap=Bootstrap())
|
|
```
|
|
|
|
2. **Run** the connector to start:
|
|
|
|
```python
|
|
connector.start()
|
|
```
|
|
|
|
### **Advanced Usage**
|
|
|
|
#### **1. Enabling Health and State Monitoring**
|
|
|
|
The `EXN` class offers two flags: `enable_health` and `enable_state`.
|
|
|
|
- **`enable_health`:** Enables a scheduled publisher that sends a health-check ping at regular intervals.
|
|
- **`enable_state`:** Activates the `StatePublisher` to manage and signal the lifecycle states of the component.
|
|
|
|
**Gradual Implementation:**
|
|
|
|
**a. Basic Setup (No Flags):**
|
|
|
|
```python
|
|
connector = connector.EXN('ui', bootstrap=Bootstrap())
|
|
```
|
|
|
|
**b. Health Monitoring:**
|
|
|
|
```python
|
|
connector = connector.EXN('ui', bootstrap=Bootstrap(), enable_health=True)
|
|
```
|
|
|
|
**c. Lifecycle State Monitoring:**
|
|
|
|
```python
|
|
connector = connector.EXN('ui', bootstrap=Bootstrap(), enable_health=True, enable_state=True)
|
|
```
|
|
|
|
#### **2. The `ready` Function**
|
|
|
|
The `ready` function in your Bootstrap class is called when the component is initialized. Use it to perform specific operations at startup:
|
|
|
|
Example:
|
|
|
|
```python
|
|
def ready(self, context):
|
|
if context.has_publisher('state'):
|
|
context.publishers['state'].starting()
|
|
```
|
|
|
|
#### **3. The Importance of the 'key' Argument**
|
|
|
|
Each publisher is identified using a unique 'key', which is crucial when handling multiple publishers:
|
|
|
|
Example:
|
|
|
|
```python
|
|
context.publishers['state'].starting()
|
|
```
|
|
|
|
Here, 'state' is the 'key' for a specific publisher, directing it to send a 'starting' signal.
|
|
|
|
### **Working with Context**
|
|
|
|
The `Context` class in the `core` section aids in managing publishers and consumers within the application. Here's how:
|
|
|
|
- Register a publisher:
|
|
|
|
```python
|
|
context.register_publisher(publisher)
|
|
```
|
|
|
|
- Check if a publisher exists:
|
|
|
|
```python
|
|
context.has_publisher('key')
|
|
```
|
|
|
|
- Build an address from a link:
|
|
|
|
```python
|
|
context.build_address_from_link(link)
|
|
```
|
|
|
|
### **Conclusion**
|
|
|
|
The `exn` module provides a robust platform for component communication, health and lifecycle management, and more. Whether you're looking for simple connectivity or advanced message routing with multiple publishers, this module has got you covered.
|
|
|
|
---
|
|
|
|
This documentation offers an inclusive overview and guide for the `exn` module. Tailor it as per your specific project requirements or as the module evolves. |