The possible exceptions relating to event publishers that may occur are as follows:
|Sample Error log|
org.wso2.carbon.databridge.agent.exception.EventQueueFullException: Cannot send events because the event queue is full
Caused by: com.lmax.disruptor.InsufficientCapacityException
|Occurrence||This occurs when events published by WSO2 DAS via a publisher of the wso2event type do not reach the endpoint.|
- A failure in the network connection.
- Unavailability of the receiver node to which the events are published (e.g., if it is unreachable, shut down etc.)
- The receiver not being responsive (e.g., due to an error is the connection, due to the receiver queue being full etc.)
- The internal queue of the receiver node to which the events are published being full.
- Increase the event queue size at databridge level. This is done by editing the
QueueSize parameter in the
<DAS_HOME>/repository/conf/data-bridge/data-agent-config.xml file. The result of doing this also depends on the other parameters configured in the
data-agent-config.xml file. Therefore, for more details, see Performance Tuning - Publishing Events.
- Check the connectivity health of the connection with the receiver endpoint.
- Check the status of the receiver, and ensure that it is able to accept messages.
Use a blocking publisher of the wso2event type instead of a non-blocking publisher. If the disruptor queue is full at a given time, a blocking publisher waits until there is space in the queue to insert the event instead of returning the method call to publish the event and throwing the
EventQueueFull exception. The following diagrams illustrate the difference between blocking and non-blocking publishers in their approach to handle events to be published when the disruptor queue is full.
This can cause back pressure on the publisher. As a result, the publisher itself can be blocked from publishing events.