首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Confluent-Kafka-Go创建窗口服务

如何使用Confluent-Kafka-Go创建窗口服务
EN

Stack Overflow用户
提问于 2021-06-17 21:17:34
回答 1查看 49关注 0票数 0

当我使用golang.org/x/sys/windows/svc创建我的api作为窗口服务时,我有一个服务。这个很好用。我能够遵循这个如何在Windows #128上使用Golang客户端,这就是工作。我可以随心所欲地消费和生产我的api作品。我可以使用这两个库,并且当我在调试模式下运行服务时,一切正常。但是当api是一个窗口服务时,服务不会启动,我得到了一个1053错误信息。我运行了几个测试,当我使用confluent库时,我可以说服务不工作。我知道,因为这个库不支持window,所以当.exe作为服务运行时,会缺少一些东西,但我可以弄清楚它是什么。

如何重现我做了一个不同于我的主要项目的小程序。只需从这里复制并粘贴示例golang.org/x/sys/windows/svc,然后从confluent添加一个消费者。

代码语言:javascript
复制
    if _, err := os.Stat(".\LOGSmsPrueba\"); os.IsNotExist(err) {
    os.MkdirAll(".\LOGSmsPrueba\", 0700)
    }
    filelogs, _ := os.OpenFile(".\LOGSmsPrueba\LOGS.log", os.O_APPEND|os.O_CREATE|os.O_RDWR, 
    0644)
    
    defer filelogs.Close()
    
    log := zerolog.New(filelogs).With().Logger()
    log.Debug().Msg("Before The Thread Of Consumer")
    go func() {
    
        log := zerolog.New(filelogs).With().Logger()
    
        kafkaservice.ConsumidorKafka(&log)
    }()
    
    changes <- svc.Status{State: svc.Running, Accepts: cmdsAccepted}
    loop:
    for {
    select {
    
        case c := <-r:
            switch c.Cmd {
            case svc.Interrogate:
                changes <- c.CurrentStatus
            
                time.Sleep(100 * time.Millisecond)
                changes <- c.CurrentStatus
            case svc.Stop, svc.Shutdown:
            
                testOutput := strings.Join(args, "-")
                testOutput += fmt.Sprintf("-%d", c.Context)
                elog.Info(1, testOutput)
                break loop
            case svc.Pause:
                changes <- svc.Status{State: svc.Paused, Accepts: cmdsAccepted}
    
            case svc.Continue:
                changes <- svc.Status{State: svc.Running, Accepts: cmdsAccepted}
    
            default:
                elog.Error(1, fmt.Sprintf("unexpected control request #%d", c))
            }
        }
    }
    changes <- svc.Status{State: svc.StopPending}
    return

检查清单

librdkafka版本: 1.7.0 confluent-kafka-go版本:1.7.0 golang.org/x/sys v0.0.0-20210615035016

EN

回答 1

Stack Overflow用户

发布于 2021-06-29 00:03:41

最后我让它起作用了。唯一缺少的部分是以静态方式编译,像这样的=> go build -ldflags‘-extldflag "-static"’。这修复了缺少dll的问题,问题是在控制台上一切工作正常。我从未见过丢失的dll。但是当我在window server 2016上工作时,控制台并没有运行。具体的错误是"Run bin file Systerm Error "libwinpthread-1.dll as not file“。我用静态编译解决了这个问题,回来也用这个编译证明了window服务。最后我让我的go服务作为窗口服务运行,并使用confluent kafka库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68020189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档