我已經努力了兩天瞭解如何在AMQP上運行後端服務(不使用Web套接字或輪詢時,REST API網關應如何向瀏覽器返回GET請求)。HTTP REST網關AMQP請求響應,沒有Web套接字或輪詢
已成功RPC'ed AMQP服務(與RabbitMqs reply_to & correlation_id),但與Flask HTTP請求等待我仍然丟失。
gateway.py - 響應處理程序中的HTTP處理程序,超時
def products_get():
def handler(ch=None, method=None, properties=None, body=None):
if body:
return body
return False
return_queue = 'products.get.return'
broker.channel.queue_declare(return_queue)
broker.channel.basic_consume(handler, return_queue)
broker.publish(exchange='', routing_key='products.get', body='Request data', properties=pika.BasicProperties(reply_to=return_queue))
now = time.time() # for timeout. Not having this returns 'no content' immediately
while time.time() < now + 1:
if handler():
return handler()
return 'Time out'
POST/PUT可以簡單地立即發送AMQP的消息,返回200/201/201,並在自己的服務工作步伐。一個單獨的REST接口僅用於GET請求似乎不合理,但不知道其他選項。
問候
Hi @FuzzyAmi。對AMQP後端服務發出同步GET請求之後。這是因爲後端服務使用AMQP寫入數據庫。如果它是用REST編寫的,我可以像你說的那樣簡單地調用它(儘管服務發現)。問候 – user2422819
@ user2422819 - 我從來沒有見過像你一起工作的服務在這裏,這對我來說毫無意義。 AMQP(和兔子)不是以這種方式使用的,儘管如果你願意,你肯定會濫用它們來工作。我會在我的答案中添加一些註釋。 – FuzzyAmi