Publishing JSON Events to Files¶
Purpose:¶
This application demonstrates how to configure WSO2 Streaming Integrator Tooling to publish data events in to files in JSON format.
Prerequisites:¶
-
Edit the uri '{WSO2SIHome}/samples/artifacts/PublishEventsToFile/files/sink/{{ name }}.txt' by replacing {WSO2SIHome} with the absolute path of your WSO2SP home directory. You can also change the path for 'file.uri' in the sink, if you want to publish your event file to a different location.
-
Save this sample. If there is no syntax error, the following messages would be shown on the console:
- Siddhi App PublishEventsToFile successfully deployed.
Executing the Sample:¶
- Start the Siddhi application by clicking on 'Run'.
- If the Siddhi application starts successfully, the following messages are shown on the console:
- PublishEventsToFile.siddhi - Started Successfully!
Testing the Sample:¶
- You can publish data events to the file through the event simulator:
- Click on 'Event Simulator' (double arrows on left tab)
- Click 'Single Simulation' (this will be already selected)
- Select PublishEventsToFile as 'Siddhi App Name'
- Select SweetProductionStream as 'StreamName'
- Click on the start button (Arrow symbol) next to the newly created simulator
- Provide attribute values
- name: toffees
- amount: 66.71
- Send event
- Provide attribute values
- name: toffees
- amount: 200
- Send event
Viewing the Results:¶
Navigate to the path defined by file.uri ({WSO2SIHome}/samples/artifacts/0038/files/sink), where you can see a .txt file named after the event (e.g., toffees.txt) and open it.
- You can see the data events that you sent:
{"event":{"name":"toffees","amount":66.71}}
{"event":{"name":"toffees","amount":200.0}}
@App:name("PublishEventsToFile")
@App:description('Publish data events processed within Siddhi to files in Json format.')
define stream SweetProductionStream (name string, amount double);
@sink(type='file', @map(type='json'), file.uri='{WSO2SIHome}/samples/artifacts/PublishEventsToFile/files/sink/{{ name }}.txt')
define stream LowProductionAlertStream (name string, amount double);
@info(name='query1')
from SweetProductionStream
select *
insert into LowProductionAlertStream;