Effect CommunityEC
Effect Community3y ago
18 replies
HadesGod

Understanding PubSub Subscription and Data Retrieval

Could some one help me about PubSub
i have doubt how can i subscribe the pubsub
and get data overtime when publisher push data in pubsub
do I need to add interval or other else?
here is my code that have 2 program
1st is publish program that push data interval
2nd subscribe program that waiting for data come in

    const pubsubEff = PubSub.bounded<number>(2);

    let runningNumber = 1;
    const publishProgram = pubsubEff.pipe(
      Effect.flatMap(PubSub.publish(runningNumber)),
      Effect.flatMap(() => Effect.sync(() => (runningNumber += 1))),
      Effect.tap(Console.log('running number', runningNumber)),
    );
    const publishSchedual = Schedule.addDelay(Schedule.forever, () =>
      Duration.seconds(1),
    );
    const repeatPublishProgram = Effect.repeat(publishProgram, publishSchedual);
    Effect.runPromise(repeatPublishProgram);

    const dequeueProgram = pubsubEff.pipe(
      Effect.flatMap((pubsub) =>
        Effect.scoped(PubSub.subscribe(pubsub)).pipe(
          Effect.map((dq) => dq),
          Effect.tap((dq) => {
            // setInterval(() => {
            const d = Queue.poll(dq);
            console.log('d', d);
            const data = Effect.runSync(d);
            console.log('data', data);
            // }, 1000);
            return Effect.succeed(true);
          }),
        ),
      ),
    );

    Effect.runPromise(dequeueProgram);
Was this page helpful?