pub.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. "math/rand"
  12. "time"
  13. )
  14. var msgConfig1 = types.MessageBusConfig{
  15. PublishHost: types.HostInfo{
  16. Host: "*",
  17. Port: 5570,
  18. Protocol: "tcp",
  19. },
  20. }
  21. func pubEventClientZeroMq() {
  22. msgConfig1.Type = messaging.ZeroMQ
  23. if msgClient, err := messaging.NewMessageClient(msgConfig1); err != nil {
  24. log.Fatal(err)
  25. } else {
  26. if ec := msgClient.Connect(); ec != nil {
  27. log.Fatal(ec)
  28. } else {
  29. client := coredata.NewEventClient(local.New("test"))
  30. r := rand.New(rand.NewSource(time.Now().UnixNano()))
  31. for i := 0; i < 10; i++ {
  32. temp := r.Intn(100)
  33. humd := r.Intn(100)
  34. var testEvent = models.Event{Device: "demo", Created: 123, Modified: 123, Origin: 123}
  35. var testReading1 = models.Reading{Pushed: 123, Created: 123, Origin: 123, Modified: 123, Device: "test device name",
  36. Name: "Temperature", Value: fmt.Sprintf("%d", temp)}
  37. var testReading2 = models.Reading{Pushed: 123, Created: 123, Origin: 123, Modified: 123, Device: "test device name",
  38. Name: "Humidity", Value: fmt.Sprintf("%d", humd)}
  39. testEvent.Readings = append(testEvent.Readings, testReading1, testReading2)
  40. data, err := client.MarshalEvent(testEvent)
  41. if err != nil {
  42. fmt.Errorf("unexpected error MarshalEvent %v", err)
  43. } else {
  44. fmt.Println(string(data))
  45. }
  46. env := types.NewMessageEnvelope([]byte(data), context.Background())
  47. env.ContentType = "application/json"
  48. if e := msgClient.Publish(env, "events"); e != nil {
  49. log.Fatal(e)
  50. } else {
  51. fmt.Printf("Pub successful: %s\n", data)
  52. }
  53. time.Sleep(1 * time.Second)
  54. }
  55. }
  56. }
  57. }
  58. func main() {
  59. pubEventClientZeroMq()
  60. }