Last Updated on : 2024-06-20 06:30:38download
A cloud project provides the message subscription feature. If the device status in the project changes, such as registration, data reporting, and offline events, Message Service is used to actively push event data to external partners with Pulsar. This helps to implement real-time and persistent messages.
Currently, Tuya Smart Message Service is customized and modified based on open source Pulsar. The Tuya-Pulsar-SDK-Go for Golang is provided.
Get the SDK address at Tuya-Pulsar-Go.
Go to Projects > Get from Version Control > URL, enter the SDK address, and then click Clone.
In the example > main.go file, edit the parameters including PulsarAddr, accessID and accessKey.
accessId
: Enter the value of Access ID in the Authorization Key section. For more information, see Cloud project parameters.accessKey
: Enter the value of Access Secret in the Authorization Key section. For more information, see Cloud project parameters.PulsarAddr
: Select an option for the area where the API operation is called. For more information about the parameters, see client.go.
Example
// SetInternalLogLevel(logrus.DebugLevel)
tylog.SetGlobalLog("sdk", false)
accessID := "xtu7maff*****8ufo"
accessKey := "479bcba6d******c4e080f7"
topic := pulsar.TopicForAccessID(accessID)
// create client
cfg := pulsar.ClientConfig{
PulsarAddr: pulsar.PulsarAddrCN,
}
c := pulsar.NewClient(cfg)
Right-click the file at example > main.go, and select Run ‘go build main.go’ to run the file.
Execution result:
GOROOT=/usr/local/go #gosetup
GOPATH=/Users/even/Documengts/go #gosetup
/usr/local/go/bin/go build -o /private/var/folders/jf/_0x1y81n67x979xf09m_cv580000gn/T/GoLand/___go_build_main_go /Users/even/Documents/SDK/GoLang/tuya-pulsar-sdk-go/example/main.go #gosetup
/private/var/folders/jf/_0x1y81n67x979xf09m_cv580000gn/T/GoLand/___go_build_main_go
2021-08-11T11:08:08.652+0800 info tuya-pulsar-sdk-go/client.go:67 start creating consumer {"pulsar": "pulsar://mqe.tuyacn.com:7285", "topic": "persistent://xtu7maff*****8ufo/out/event"}
Received message
2021-08-11T11:43:45.088+0800 debug tuya-pulsar-sdk-go/consumer.go:53 consumerImpl receive message {"topic": "persistent://xtu7maff*****8ufo/out/event-partition-0"}
2021-08-11T11:43:45.088+0800 info example/main.go:42 payload preview {"payload": "{\"data\":\"nOFoTwoAb+60lp1Mq1Gi9pTUoNevgMb3n6t6RQeEf2/HceQwrrF0vuCyPhPmcgsLzQtf9wFhkSQ6IBE2P3yYPrIcrc/mOxsa2XLThUj1eW8JfG8gnY2R7wUL3Xn4MP48poM3HepgaRZOkpsSKmAqgdxobOPC7kNpk92hmXjB0PEOZ2Du4MbP4NSN49QcJ4MPgRVaIYpFeWwThl1uFaul6QeTXHlHe0KSqaqKUpDueFTjGH5tallpI10RZxofJ72f\",\"protocol\":4,\"pv\":\"2.0\",\"sign\":\"aa55a7512cae4c7a2170302c64a8152d\",\"t\":1628653425175}"}
2021-08-11T11:43:45.089+0800 info example/main.go:58 aes decode {"decode payload": "{\"dataId\":\"5422f320-fa56-11eb-8396-02425b0322e7\",\"devId\":\"vde*******13176\",\"productKey\":\"pp*****p\",\"status\":[{\"1\":\"true\",\"code\":\"switch_led\",\"t\":1628653425064,\"value\":true}]}"}
2021-08-11T11:43:45.089+0800 debug tuya-pulsar-sdk-go/consumer.go:67 Handler trace info {"msgID": "ledgerId:29026543 entryId:8 partition:0 ", "topic": "persistent://xtu7maff*****8ufo/out/event-partition-0", "decode spend": "14.417µs", "Unactive spend": "1.167µs", "ConsumerID spend": "875ns", "HandlePayload spend": "277.083µs", "Ack spend": "129.541µs", "total spend": "471.75µs"}
Parsed message data
aes decode {
"decode payload": "{
\"dataId\":\"5422f320-fa56-11eb-8396-02425b0322e7\",
\"devId\":\"vde*******13176\",
\"productKey\":\"pp*****p\",
\"status\":[{
\"1\":\"true\",
\"code\":\"switch_led\",
\"t\":1628653425064,
\"value\":true
}]
}"
}
Note: For more information about the data parsing method, see Data signing. The data decryption method has been encapsulated in the SDK. For more information, see pkg > tyutils > aes.go.
Received message
2021-08-11T11:39:02.086+0800 debug tuya-pulsar-sdk-go/consumer.go:53 consumerImpl receive message {"topic": "persistent://xtu7maff*****8ufo/out/event-partition-0"}
2021-08-11T11:39:02.089+0800 info example/main.go:42 payload preview {"payload": "{\"data\":\"YWLA8449ERiXEzbnOzEETWIHXXLCsmCgK01uJteO1xHHceQwrrF0vuCyPhPmcgsLzQtf9wFhkSQ6IBE2P3yYPrIcrc/mOxsa2XLThUj1eW8JfG8gnY2R7wUL3Xn4MP48poM3HepgaRZOkpsSKmAqgSlV4VEv7NtZ0T9wsM0xsQe+Gd3lcDRjtoWkeHTaIhvNoE/5/HN5VRTt8SFceoAp0HbL1+8oe+WxngU4aUzQQUDqlI27xZTlsgXlpK+rmyxy7z0o3iD5KROUiGtsAvdO0XJ+KAh08J5b48fs2hkT/LQxN25CG2nxnLbJVhQsTaeDxs3Ggo1C/+qAL04mfKryUw==\",\"protocol\":4,\"pv\":\"2.0\",\"sign\":\"67d95e7*******1814c4**7fa5b7c01\",\"t\":1628653142175}"}
2021-08-11T11:39:02.089+0800 info example/main.go:58 aes decode {"decode payload": "{\"dataId\":\"ab770414-fa55-11eb-8396-02425b0322e7\",\"devId\":\"vde*******13176\",\"productKey\":\"pp*****p\",\"status\":[{\"2\":\"white\",\"code\":\"work_mode\",\"t\":1628653142080,\"value\":\"white\"},{\"3\":\"507\",\"code\":\"bright_value_v2\",\"t\":1628653142080,\"value\":507}]}"}
2021-08-11T11:39:02.092+0800 debug tuya-pulsar-sdk-go/consumer.go:67 Handler trace info {"msgID": "ledgerId:29026543 entryId:6 partition:0 ", "topic": "persistent://xtu7maff*****8ufo/out/event-partition-0", "decode spend": "68.458µs", "Unactive spend": "1.041µs", "ConsumerID spend": "1.542µs", "HandlePayload spend": "3.312541ms", "Ack spend": "175.791µs", "total spend": "3.5965ms"}
Parsed message data
aes decode {
"decode payload": "{
\"dataId\":\"ab770414-fa55-11eb-8396-02425b0322e7\",
\"devId\":\"vde*******13176\",
\"productKey\":\"pp*****p\",
\"status\":[
{
\"2\":\"white\",
\"code\":\"work_mode\",
\"t\":1628653142080,
\"value\":\"white\"
},
{
\"3\":\"507\",
\"code\":\"bright_value_v2\",
\"t\":1628653142080,
\"value\":507
}
]
}"
}
For more information, see Get Push Messages by Pulsar (Java SDK).
Is this page helpful?
YesFeedbackIs this page helpful?
YesFeedback