25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 
 
 

56 satır
1.1 KiB

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/AFASystems/presence/internal/pkg/bridge/mqtthandler"
  5. "github.com/AFASystems/presence/internal/pkg/config"
  6. "github.com/AFASystems/presence/internal/pkg/kafka"
  7. "github.com/yosssi/gmq/mqtt"
  8. "github.com/yosssi/gmq/mqtt/client"
  9. )
  10. func main() {
  11. cfg := config.Load()
  12. cli := client.New(&client.Options{
  13. ErrorHandler: func(err error) {
  14. fmt.Println("Error in initiating MQTT client: ", err)
  15. },
  16. })
  17. defer cli.Terminate()
  18. err := cli.Connect(&client.ConnectOptions{
  19. Network: "tcp",
  20. Address: cfg.MQTTHost,
  21. ClientID: []byte(cfg.MQTTClientID),
  22. UserName: []byte(cfg.MQTTUser),
  23. Password: []byte(cfg.MQTTPass),
  24. })
  25. if err != nil {
  26. fmt.Println("Error comes from here")
  27. panic(err)
  28. }
  29. writer := kafka.KafkaWriter("127.0.0.1:9092", "rawbeacons")
  30. defer writer.Close()
  31. err = cli.Subscribe(&client.SubscribeOptions{
  32. SubReqs: []*client.SubReq{
  33. {
  34. TopicFilter: []byte("publish_out/#"),
  35. QoS: mqtt.QoS0,
  36. Handler: func(topicName, message []byte) {
  37. mqtthandler.MqttHandler(writer, topicName, message)
  38. },
  39. },
  40. },
  41. })
  42. if err != nil {
  43. panic(err)
  44. }
  45. select {}
  46. }