<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      計劃做一個工業(yè)二級系統(tǒng),上連Mes,下連一級plc,遂學習。
      與plc鏈接和數(shù)據(jù)庫的部分基礎是寫完了,遇到的問題是數(shù)據(jù)庫服務需要先寫入一條總數(shù)據(jù),數(shù)據(jù)的objectid唯一,然后將objectid發(fā)送給plc讀寫服務,plc讀寫服務才能寫入對應的數(shù)據(jù)。涉及到服務之間的通信,沒有想到更好的方式,遂選擇RabbitMQ作為信息中間件來進行進程間的交互。
      安裝RabbitMQ的時候踩了一個坑,因為計算機的名稱是中文導致了管理模塊進不去,修改了計算機名稱之后能進去了,但是沒有監(jiān)聽端口,找了一圈才發(fā)現(xiàn)是需要重新修復一下。

      進入rabbitmq安裝目錄的sbin文件夾后,先關閉rabbitmq服務,在cmd里面按順序執(zhí)行下列操作:
      rabbitmq-service.bat removeset
      rabbitmq-service.bat install
      rabbitmq-plugins enable rabbitmq_management
      然后就修好了。

      回到正題,測試用的生產(chǎn)者初始化很簡單:

        user_info = pika.PlainCredentials('guest', 'guest')  # 用戶名和密碼
        connection = pika.BlockingConnection(pika.ConnectionParameters('localhost', 5672, '/', user_info))  
        channel = connection.channel()    
        queue = 'testqueue'
        channel.exchange_declare(exchange='exchangedirect',exchange_type='direct',passive=True)
      

      定義了一個類來發(fā)送信息:

      class Producer:
          def __init__(self):
              self.message = {
                              'fuc':self.run,
                              'you':'2k'
                              }
              json_str = json.dumps(self.message)
              self.bytes_data = json_str.encode('utf-8')#轉(zhuǎn)為bytes
      
          def send(self):
              channel.basic_publish(exchange='exchangedirect',
                                    routing_key='wang', 
                                    body=self.bytes_data,
                                    )
      
              channel.basic_publish(exchange='exchangedirect',
                                    routing_key='jiang',
                                    body=self.bytes_data,
                                    )
      
        if __name__ == "__main__":
            producer = Producer()
            producer.send()
      

      想要使用json來作為信息類型,比較方便,因為RabbitMQ傳輸時使用的是Bytes格式數(shù)據(jù),因此要先把json轉(zhuǎn)為bytes字符串。隨便定義了兩個路由'wang'和'jiang'用來測試。

      #消費者
      import pika
      import json
      import queue
      
      user_info = pika.PlainCredentials('guest', 'guest')  # 用戶名和密碼
      connection = pika.BlockingConnection(pika.ConnectionParameters('localhost', 5672, '/', user_info))
      channel = connection.channel()
      channel.exchange_declare(exchange='exchangedirect',exchange_type='direct',passive=True)
      queue_name = "testqueue"
      
      channel.queue_bind(exchange='exchangedirect',
                         queue=queue_name,
                         routing_key='wang')
      channel.queue_bind(exchange='exchangedirect',
                         queue=queue_name,
                         routing_key='chara')
      
      class Customer:
          def __init__(self):
              super().__init__()
              self.recdata = {}
              self.task = ''
              self.queue =  queue.Queue(maxsize=100)
      
          def run(self):
              print('MQ祈禱中.....')
              channel.basic_consume(queue=queue_name,
                                    auto_ack=False,  
                                    on_message_callback=self.callback,
                                    )
              channel.basic_qos(prefetch_count=1)
              channel.start_consuming()
      
          # 構建回調(diào)函數(shù)
          def callback(self,ch, method, properties, body):
              print(" 接收消息成功,消息為:{} .......".format(body))
              encoding = properties.content_encoding or 'utf-8'
              json_str = body.decode(encoding)
              data = json.loads(json_str)
              print(f"收到JSON數(shù)據(jù): {data}")
              self.recdata = data
              self.puttask()
              ch.basic_ack(delivery_tag=method.delivery_tag)
      
          def puttask(self):
              task = self.recdata.get('task')
              if not len(task) == 0:
                  task = self.task
                  self.queue.put(task,block=True, timeout=1)
                  print(self.task)
      
      
      
      if __name__ == "__main__":
          customer = Customer()
          customer.run()
      
      

      測試用的消費者,鏈接方面和生產(chǎn)者一樣,run函數(shù)啟動監(jiān)聽,回調(diào)函數(shù)處理收到的信息轉(zhuǎn)為json格式,然后調(diào)用puttask方法將方法加入隊列。還差個任務完成的還沒寫。

      博客園  ©  2004-2025
      浙公網(wǎng)安備 33010602011771號 浙ICP備2021040463號-3

      主站蜘蛛池模板: 国产精品天干天干综合网| 国产午夜精品理论大片| 婷婷国产亚洲性色av网站| 久久精品国产亚洲av麻豆软件| 色欲AV无码一区二区人妻| 亚洲高清有码在线观看| 亚洲日韩精品无码一区二区三区| 精品精品亚洲高清a毛片| 亚洲国产成人无码影片在线播放| 免费国产精品黄色一区二区| 成人午夜av在线播放| 午夜射精日本三级| 欧美激情在线播放| 亚洲岛国成人免费av| 日韩有码国产精品一区| 临城县| 又黄又刺激又黄又舒服| 国产精品鲁鲁鲁| 69精品丰满人妻无码视频a片| 亚洲成在人天堂一区二区| 精品国产一区二区三区国产馆| 久久天天躁狠狠躁夜夜躁2o2o| 热99久久这里只有精品| 欧美老熟妇乱子伦牲交视频| 少妇性bbb搡bbb爽爽爽欧美| 18禁成人免费无码网站| 国产特级毛片aaaaaa毛片| 欧美成人性色一区欧美成人性色区| 国产婷婷精品av在线| 久久精品夜色噜噜亚洲av| 男人扒女人添高潮视频| 99久久精品国产一区色| 欧美一区二区三区啪啪| 亚洲成A人片在线观看无码不卡| 国产成人综合亚洲第一区| 国产精品99久久久久久董美香| 性色a码一区二区三区天美传媒| 中文字幕日韩精品人妻| 亚洲国产av无码精品无广告 | 亚洲成人av在线资源网| 午夜射精日本三级|