discovery: +invoke url

This commit is contained in:
Stephan D
2026-01-19 11:07:21 +01:00
parent 1eb5a918a0
commit 64803a21e0
26 changed files with 170 additions and 32 deletions

View File

@@ -4,6 +4,7 @@ runtime:
grpc:
network: tcp
address: ":50052"
advertise_host: "sendico_ledger"
enable_reflection: true
enable_health: true

View File

@@ -116,7 +116,11 @@ func (i *Imp) Start() error {
}
serviceFactory := func(logger mlogger.Logger, repo storage.Repository, producer msg.Producer) (grpcapp.Service, error) {
svc := ledger.NewService(logger, repo, producer, feesClient, feesTimeout)
invokeURI := ""
if cfg.GRPC != nil {
invokeURI = cfg.GRPC.DiscoveryInvokeURI()
}
svc := ledger.NewService(logger, repo, producer, feesClient, feesTimeout, invokeURI)
i.service = svc
return svc, nil
}

View File

@@ -44,6 +44,7 @@ type Service struct {
producer pmessaging.Producer
fees feesDependency
announcer *discovery.Announcer
invokeURI string
outbox struct {
once sync.Once
@@ -61,14 +62,15 @@ func (f feesDependency) available() bool {
return f.client != nil
}
func NewService(logger mlogger.Logger, repo storage.Repository, prod pmessaging.Producer, feesClient feesv1.FeeEngineClient, feesTimeout time.Duration) *Service {
func NewService(logger mlogger.Logger, repo storage.Repository, prod pmessaging.Producer, feesClient feesv1.FeeEngineClient, feesTimeout time.Duration, invokeURI string) *Service {
// Initialize Prometheus metrics
initMetrics()
service := &Service{
logger: logger.Named("ledger"),
storage: repo,
producer: prod,
logger: logger.Named("ledger"),
storage: repo,
producer: prod,
invokeURI: strings.TrimSpace(invokeURI),
fees: feesDependency{
client: feesClient,
timeout: feesTimeout,
@@ -204,7 +206,7 @@ func (s *Service) startDiscoveryAnnouncer() {
announce := discovery.Announcement{
Service: "LEDGER",
Operations: []string{"balance.read", "ledger.debit", "ledger.credit"},
InvokeURI: discovery.DefaultInvokeURI(string(mservice.Ledger)),
InvokeURI: s.invokeURI,
Version: appversion.Create().Short(),
}
s.announcer = discovery.NewAnnouncer(s.logger, s.producer, string(mservice.Ledger), announce)