Я могу что-то упустить при подписке на тему, но не уверен. Ниже приведен мой код подписки на iot python, который работает отлично.
однако, если я запускаю код без кода подписки "myAWSIoTMQTTClient.subscribe (" topic_1 ", 1, customCallback)"
topic_1 публикуется, но если попытаться получить доступ для подписки topic_1 с другой консоли python, он просто возвращает true и не печатает сообщение из пользовательского обратного вызова. попробуйте запустить подписку и опубликовать в отдельной консоли, а затем выдает ошибку. другими словами, как я могу подписаться на тему, которая уже создана?
from AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTClient
import time
import argparse
import json
host = "XXXXXXXX.iot.us-east-2.amazonaws.com"
rootCAPath = "root-CA.crt"
certificatePath = "XXXXX.cert.pem"
privateKeyPath = "XXXXX.private.key"
port = 8883
clientId = "sdk-java"
topic = "topic_1"
message_to_print="aws aws_preethi"
def customCallback(client, userdata, message):
print("Received a new message: ")
print(message.payload)
print("from topic: ")
print(message.topic)
print("--------------\n\n")
myAWSIoTMQTTClient = AWSIoTMQTTClient(clientId)
myAWSIoTMQTTClient.configureEndpoint(host, port)
myAWSIoTMQTTClient.configureCredentials(rootCAPath, privateKeyPath, certificatePath)
# AWSIoTMQTTClient connection configuration
myAWSIoTMQTTClient.configureAutoReconnectBackoffTime(1, 32, 20)
myAWSIoTMQTTClient.configureOfflinePublishQueueing(-1) # Infinite offline Publish queueing
myAWSIoTMQTTClient.configureDrainingFrequency(2) # Draining: 2 Hz
myAWSIoTMQTTClient.configureConnectDisconnectTimeout(10) # 10 sec
myAWSIoTMQTTClient.configureMQTTOperationTimeout(5) # 5 sec
# Connect and subscribe to AWS IoT
myAWSIoTMQTTClient.connect()
myAWSIoTMQTTClient.subscribe("topic_1", 1, customCallback)
# Publish to the same topic in a loop forever
loopCount = 0
while True:
message = {}
message['message'] = message_to_print
message['sequence'] = loopCount
messageJson = json.dumps(message)
myAWSIoTMQTTClient.publish(topic, messageJson, 1)
loopCount += 1
time.sleep(10)