2022年 11月 5日

利用python收发MQ

一、收发MQ基础

引入stomp包,

 

  1. # -*- coding: utf-8 -*-
  2. import stomp
  3. import time,random
  4. from cmd.util import timePaser
  5. port = 700
  6. ip='10.13.69.16'
  7. passcode='8JiPUndN'
  8. queue_name = '/topic/SampleQueue'
  9. topic_name = '/topic/cweb.topic.receive.msg'
  10. listener_name = 'SampleListener'
  11. class SampleListener(object):
  12. def on_message(self, headers, message):
  13. print ('headers: %s' % headers)
  14. print ('message: %s' % message)
  15. # 推送到队列queue
  16. def send_to_queue(msg):
  17. conn = stomp.Connection10([(ip, port)])
  18. conn.start()
  19. conn.connect()
  20. conn.send(queue_name, msg)
  21. conn.disconnect()
  22. # 推送到主题
  23. def send_to_topic(msg):
  24. headers = {'type': 'bytesMessage'}
  25. conn = stomp.Connection([(ip, port)])
  26. conn.start()
  27. conn.connect(username='admin', passcode=passcode, wait=True, )
  28. conn.send(destination=topic_name, body=msg, headers=headers) # 发送消息
  29. # print ("$$$ send one message")
  30. conn.disconnect()
  31. ##从队列接收消息
  32. def receive_from_queue():
  33. conn = stomp.Connection10([(ip, port)])
  34. conn.set_listener(listener_name, SampleListener())
  35. conn.start()
  36. conn.connect()
  37. conn.subscribe(queue_name)
  38. time.sleep(1) # secs
  39. conn.disconnect()
  40. ##从主题接收消息
  41. def receive_from_topic():
  42. conn = stomp.Connection([(ip, port)])
  43. conn.set_listener(listener_name, SampleListener())
  44. conn.start()
  45. conn.connect(username='admin', passcode=passcode, wait=True, headers={'tcpNoDelay': 'true'})
  46. conn.subscribe(topic_name,id="", ack='auto')
  47. while 1:
  48. # send_to_topic('topic')
  49. time.sleep(3) # secs
  50. conn.disconnect()

 

二、构造随机报文 

 

  1. def sendTodoRand():
  2. for i in range(1,3):
  3. randomId=str(random.randrange(1000,9999));msgId=randomId+str(time.time())
  4. msg = '''{"msgId":"''' \
  5. +msgId+ '''","msgStatus":"'''+str(random.randrange(1,4))+'''","msgTitle":"待办事项标题'''\
  6. +randomId+'''","msgTime":"'''+timePaser.nowTime()+'''","extendStr":{"showFlag":1,"picUrl":"","extendJson":"{\\\"extend1\\\":\\\"人数:100\\\"}","extendNoShow":""}}]}}
  7. '''
  8. print(msgId);print(msg)
  9. send_to_topic(msg)