package main import ( "github.com/bytecodealliance/wasm-tools-go/cm" "gitea.rebus.ninja/lore/wasm-nats-producer-client/gen/wasmcloud/messaging/consumer" "gitea.rebus.ninja/lore/wasm-nats-producer-client/gen/wasmcloud/messaging/types" logger "gitea.rebus.ninja/lore/wasm-nats-producer-client/gen/wasi/logging/logging" //config "gitea.rebus.ninja/lore/wasm-nats-producer-client/gen/wasi/config/runtime" "time" ) type messagingConsumerAdapter struct { Publish func(msg types.BrokerMessage) (result cm.Result[string, struct{}, string]) } // NOTE(lxf): this is overridden in tests var messagingConsumer = &messagingConsumerAdapter{ Publish: consumer.Publish, } func loop() cm.Result[string, struct{}, string] { // TODO implement the logic to get the destination topic from the config // dest_topic := config.GetAll() dest_topic := "test.reply" counter := 0 // TASK for { // generate random message data := []byte("Hello, World! " + string(counter)) // Send reply reply := types.BrokerMessage{ Subject: dest_topic, Body: cm.ToList(data), ReplyTo: cm.None[string](), } res := messagingConsumer.Publish(reply) if res.IsErr() { logger.Log(logger.LevelError, "MessageHandler", "Failed to send reply, error: " + *res.Err()) return res } counter++ if counter == 1000 { break } // sleep for 1 second time.Sleep(1 * time.Second) } return cm.OK[cm.Result[string, struct{}, string]](struct{}{}) }