This sample demonstrates how to produce records to the DXL streaming service.
Prerequisites
- A DXL streaming service is available for the sample to connect to.
 - Credentials for the service available for use with the sample.
 
Setup
Modify the example to include the appropriate settings for the streaming service channel:
// Change these below to match the appropriate details for your
// channel connection.
var CHANNEL_URL = 'http://127.0.0.1:50080'
var CHANNEL_USERNAME = 'me'
var CHANNEL_PASSWORD = 'secret'
var CHANNEL_TOPIC = 'my-topic'
// Path to a CA bundle file containing certificates of trusted CAs. The CA
// bundle is used to validate that the certificate of the server being connected
// to was signed by a valid authority. If set to an empty string, the server
// certificate is not validated.
var VERIFY_CERTIFICATE_BUNDLE = ''For testing purposes, you can use the fake_streaming_service Python tool
embedded in the OpenDXL Streaming Client SDK to start up a local streaming
service. See the documentation for the
Basic Produce Example
in the OpenDXL Streaming Client Python SDK for more information on the
fake_streaming_service tool. The initial settings in the example above include
the URL and credentials used by the fake_streaming_service.
To launch the fake_streaming_service tool, run the following command in
a command window:
$ python sample/fake_streaming_service.pyMessages like the following should appear in the command window:
INFO:__main__:Starting service
INFO:__main__:Started service on http://mycaseserver:50080Running
To run this sample execute the sample/basic/basic-produce-example.js script
as follows:
$ node sample/basic/basic-produce-example.jsIf the records are successfully produced to the streaming service, the following line should appear in the output window:
Succeeded.To validate that the records were produced to the streaming service with
the expected content, you can execute the
sample/basic/basic-consume-example.js script as follows:
$ node sample/basic/basic-consume-example.jsOne of the records received by the sample should appear similar to the following:
Received payloads: [
    {
        "message": "Hello from OpenDXL"
    }
]Details
The majority of the sample code is shown below:
var CHANNEL_TOPIC = 'my-topic'
// Create the message payload to be included in a record
var messagePayload = {
  message: 'Hello from OpenDXL'
}
// Create the full payload with records to produce to the channel
var channelPayload = {
  records: [
    {
      routingData: {
        topic: CHANNEL_TOPIC,
        shardingKey: ''
      },
      message: {
        headers: {},
        // Convert the message payload from an object to a base64-encoded
        // string.
        payload: Buffer.from(JSON.stringify(messagePayload)).toString('base64')
      }
    }
  ]
}
// Create a new channel object
var channel = new Channel(CHANNEL_URL,
  addTlsOptions({
    auth: new ChannelAuth(CHANNEL_URL, CHANNEL_USERNAME,
      CHANNEL_PASSWORD, addTlsOptions())
  })
)
// Produce the payload records to the channel
channel.produce(
  channelPayload,
  function (error) {
    channel.destroy()
    if (error) {
      console.log('Error : ' + error)
    } else {
      console.log('Succeeded.')
    }
  }
)The first step is to create a payload object which includes an array of
records to be sent to the channel. The message.payload item in each record
is flattened from a dictionary into a string and encoded using the base64
algorithm.
The next step is to create a Channel instance, which establishes a
channel to the streaming service. The channel parameters include the URL to the
streaming service, CHANNEL_URL, and credentials that the client uses to
authenticate itself to the service, CHANNEL_USERNAME and CHANNEL_PASSWORD.
The final step is to call the Channel#produce method with the payload of records to be produced to the channel. Assuming the records can be produced successfully, the text "Succeeded." should appear in the console output.