with Fivetran and Kafka?
The Fivetran API enables automated, effortless replication of data from various sources into a cloud warehouse. By leveraging Fivetran in Pipedream, you can programmatically manage your Fivetran connectors, set up and control data pipelines, and trigger data syncs. Pipedream's serverless platform allows for the creation of workflows that can respond to HTTP requests, process events on a schedule, and interact with numerous other services to create complex automation solutions.
import { axios } from "@pipedream/platform"
export default defineComponent({
props: {
fivetran: {
type: "app",
app: "fivetran",
}
},
async run({steps, $}) {
return await axios($, {
url: `https://api.fivetran.com/v1/users`,
headers: {
"Content-Type": `application/json`,
},
auth: {
username: `${this.fivetran.$auth.api_key}`,
password: `${this.fivetran.$auth.api_secret}`,
},
})
},
})
import { Kafka } from "kafkajs"
export default defineComponent({
props: {
kafka: {
type: "app",
app: "kafka",
}
},
async run({steps, $}) {
const kafka = new Kafka({
brokers: [`${this.kafka.$auth.host}:${this.kafka.$auth.port}`],
});
const consumer = kafka.consumer({ groupId: 'TestGroup' });
await consumer.connect()
await consumer.subscribe({ topic: 'SampleTopic', fromBeginning: true });
let consumedMessage = "";
const eachMessage = async function({ topic, partition, message }){
consumedMessage = message.value.toString();
return consumedMessage;
};
await consumer.run({
eachMessage,
});
const producer = kafka.producer();
await producer.connect()
await producer.send({
topic: 'SampleTopic',
messages: [
{ value: 'Welcome KafkaJS + Pipedream users! '+ new Date().toISOString() },
],
});
await producer.disconnect();
const data = await consumer.describeGroup();
return { consumedMessage, groupDescription: data };
},
})