Publishing:
1. Process Builder
2. Flows
3. Apex
4. API ( REST/SOAP)
Subscribing:
1. Process Builder
2. Flows
3. Apex Trigger
4. CometD
Subscribing to Platform Events using Apex
Check this example –
Publishing Platform Event using Process Builder

Subscribing to Platform Events from Process Builder in Salesforce
