簡體   English   中英

在bluemix消息中心上,如何在rest和mqlight客戶端之間交換消息?

[英]On bluemix message hub, how do I exchange messages between a rest and mqlight client?

根據文檔https://console.ng.bluemix.net/docs/services/MessageHub/index.html#messagehub ,應該可以通過REST向MessageHub提交消息,並通過MQLight客戶端接收消息。 但是,文檔缺少示例,並且有點不透明。

因此,如果我創建MQLight主題,並讓python客戶端監聽,

    import json
    import logging
    import mqlight
    import time

    amqps = 'amqps://xxxxxxxxxxxxx.messagehub.services.us-south.bluemix.net:5671'
    options = {
        'user' : 'xxxxxxxxxxxxxxxx',
        'password' : 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
    }

    def on_message(message_type, data, delivery):
        d = json.loads(data)
        print str(d)

    def on_started(err):
        client.subscribe('test', on_message = on_message)

    def on_stopped(err):
        logging.info('stopped')

    client = mqlight.Client(amqps, security_options = options, client_id = 'client', on_started=on_started)

    while True:
        logging.info(str(client.get_state()))
        time.sleep(5)

我將如何通過curl發布消息。 我嘗試過,值字符串是base64編碼的,

    curl  -i                                                                                                      \
          -X POST                                                                                                 \
          -H "X-Auth-Token:${APIKEY}"                                                                             \
          -H "Content-Type: application/vnd.kafka.binary.v1+json"                                                 \
          --data '{"records":[{"value":"S2Fma2E="}]}'                                                             \
          "https://kafka-rest-prod01.messagehub.services.us-south.bluemix.net:443/topics/MQLight/test"

但這又回來了

    {"error_code":404,"message":"HTTP 404 Not Found"}

您是對的,這里的文檔不是特別充實。 唯一的細節是在此處的小部分中該部分試圖解釋為與其他Kafka或REST客戶端的MQLight客戶端進行互操作,您需要能夠對AMQP 1.0消息進行編碼/解碼格式(請參閱規范的第3節)。

當您需要訪問AMQP 1.0庫時,您將很難在curl腳本中實現此目標,甚至Python也不是理想的選擇,因為當前您唯一的實際選擇是引入python-qpid-proton ,因為包裹起來重量非常大proton-c本機庫,因此需要安裝時編譯。

例如,在Java中,您可以使用官方Java kafka-clients和qpid proton-j的組合來提供AMQP消息編碼和解碼。 或者,如果您必須使用REST api,則添加諸如feign之類的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM