wasm-nats-stream-client/messaging.go

37 lines
1.0 KiB
Go
Raw Normal View History

2024-12-05 23:36:10 +00:00
package main
import (
"github.com/bytecodealliance/wasm-tools-go/cm"
"gitea.rebus.ninja/lore/go-nats-client/gen/wasmcloud/messaging/consumer"
"gitea.rebus.ninja/lore/go-nats-client/gen/wasmcloud/messaging/types"
"go.wasmcloud.dev/component/log/wasilog"
)
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 handleMessage(msg types.BrokerMessage) cm.Result[string, struct{}, string] {
logger := wasilog.ContextLogger("handleMessage")
logger.Info("Received message", "subject", msg.Subject)
2024-12-06 00:29:36 +00:00
reply := types.BrokerMessage{
Subject: msg.Subject + ".reply",
Body: msg.Body,
ReplyTo: cm.None[string](),
}
res := messagingConsumer.Publish(reply)
if res.IsErr() {
logger.Error("Failed to send reply", "error", *res.Err())
return res
2024-12-05 23:36:10 +00:00
}
return cm.OK[cm.Result[string, struct{}, string]](struct{}{})
}