python 发送和接收ActiveMQ

发布时间:2019-08-30 08:36:26编辑:auto阅读(1515)

    ActiveMQ是java开发的消息中间件服务。可以支持多种协议(AMQP,MQTT,OpenWire,Stomp),默认的是OpenWire。而python与ActiveMQ的通信使用的是Stomp协议。而如果你的服务没有开启则需要配置开启。

    首先需要安装python的stomp库。命令如下:

    pip install stomp.py

    接着,就是上代码了具体如下:

    # -*-coding:utf-8-*-
    import stomp
    import time
    
    
    queue_name = '/queue/SampleQueue'
    topic_name = '/topic/SampleTopic'
    listener_name = 'SampleListener'
    
    class SampleListener(object):
        def on_message(self, headers, message):
            print 'headers: %s' % headers
            print 'message: %s' % message
    
    # 推送到队列queue
    def send_to_queue(msg):
        conn = stomp.Connection10([('127.0.0.1',61613)])
        conn.start()
        conn.connect()
        conn.send(queue_name, msg)
        conn.disconnect()
    
    #推送到主题
    def send_to_topic(msg):
        conn = stomp.Connection10([('127.0.0.1',61613)])
        conn.start()
        conn.connect()
        conn.send(topic_name, msg)
        conn.disconnect()
    
    ##从队列接收消息
    def receive_from_queue():
        conn = stomp.Connection10([('127.0.0.1',61613)])
        conn.set_listener(listener_name, SampleListener())
        conn.start()
        conn.connect()
        conn.subscribe(queue_name)
        time.sleep(1) # secs
        conn.disconnect()
    
    ##从主题接收消息
    def receive_from_topic():
        conn = stomp.Connection10([('127.0.0.1',61613)])
        conn.set_listener(listener_name, SampleListener())
        conn.start()
        conn.connect()
        conn.subscribe(topic_name)
        while 1:
            send_to_topic('topic')
            time.sleep(3) # secs
    
        conn.disconnect()
    
    if __name__=='__main__':
        # send_to_queue('len 123')
        # receive_from_queue()
    
        receive_from_topic()

    但是上述只是发送文本类型的消息,除此之外,ActiveMQ还支持MapMessage、ObjectMessage、BytesMessage、和StreamMessage等多个消息类型。

    想学习更多Python技巧,请扫描如下二维码!!!

关键字