pub.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package main
  2. import (
  3. "context"
  4. "fmt"
  5. "github.com/edgexfoundry/go-mod-core-contracts/clients/coredata"
  6. "github.com/edgexfoundry/go-mod-core-contracts/clients/urlclient/local"
  7. "github.com/edgexfoundry/go-mod-core-contracts/models"
  8. "github.com/edgexfoundry/go-mod-messaging/messaging"
  9. "github.com/edgexfoundry/go-mod-messaging/pkg/types"
  10. "log"
  11. "time"
  12. )
  13. var msgConfig1 = types.MessageBusConfig{
  14. PublishHost: types.HostInfo{
  15. Host: "*",
  16. Port: 5570,
  17. Protocol: "tcp",
  18. },
  19. }
  20. func pubEventClientZeroMq() {
  21. msgConfig1.Type = messaging.ZeroMQ
  22. if msgClient, err := messaging.NewMessageClient(msgConfig1); err != nil {
  23. log.Fatal(err)
  24. } else {
  25. if ec := msgClient.Connect(); ec != nil {
  26. log.Fatal(ec)
  27. } else {
  28. client := coredata.NewEventClient(local.New("test"))
  29. //r := rand.New(rand.NewSource(time.Now().UnixNano()))
  30. for i := 0; i < 10; i++ {
  31. //temp := r.Intn(100)
  32. //humd := r.Intn(100)
  33. var testEvent = models.Event{Device: "demo", Created: 123, Modified: 123, Origin: 123}
  34. var testReading1 = models.Reading{Pushed: 123, Created: 123, Origin: 123, Modified: 123, Device: "test device name",
  35. Name: "Temperature", Value: fmt.Sprintf("%d", i*8)}
  36. var testReading2 = models.Reading{Pushed: 123, Created: 123, Origin: 123, Modified: 123, Device: "test device name",
  37. Name: "Humidity", Value: fmt.Sprintf("%d", i*9)}
  38. var r3 = models.Reading{Name:"b1"}
  39. if i % 2 == 0 {
  40. r3.Value = "true"
  41. } else {
  42. r3.Value = "false"
  43. }
  44. r4 := models.Reading{Name:"i1", Value:fmt.Sprintf("%d", i)}
  45. r5 := models.Reading{Name:"f1", Value:fmt.Sprintf("%.2f", float64(i)/2.0)}
  46. r6 := models.Reading{Name:"j1", Value:`{"field1" : "v1", "field2" : 2}`}
  47. testEvent.Readings = append(testEvent.Readings, testReading1, testReading2, r3, r4, r5, r6)
  48. data, err := client.MarshalEvent(testEvent)
  49. if err != nil {
  50. fmt.Errorf("unexpected error MarshalEvent %v", err)
  51. } else {
  52. fmt.Println(string(data))
  53. }
  54. env := types.NewMessageEnvelope([]byte(data), context.Background())
  55. env.ContentType = "application/json"
  56. if e := msgClient.Publish(env, "events"); e != nil {
  57. log.Fatal(e)
  58. } else {
  59. fmt.Printf("Pub successful: %s\n", data)
  60. }
  61. time.Sleep(1 * time.Second)
  62. }
  63. }
  64. }
  65. }
  66. func main() {
  67. pubEventClientZeroMq()
  68. }