python消息中间件activemq_ActiveMQ:使用Python访问ActiveMQ

Windows 10家庭中文版,Python 3.6.4,stomp.py 4.1.21

ActiveMQ支持Python访问,提供了基于STOMP协议(端口为61613)的库。

ActiveMQ的官文Cross Language Clients中给出了更详细的介绍,并附有示例代码,如下图:

第一行为常规Python访问,第二行为使用Jython访问的方式,四个操作。

Python访问ActiveMQ需要使用stomp.py,见其官网。

下载官网的代码,解压,命令行进入其目录,使用pyhthon setup.py install即可安装好,然后就可以使用stomp.py了。

官方示例代码:给队列test发送一个消息,也可以把第7行的destination的“/queue/”去掉,只剩test。

1 importstomp2

3 conn =stomp.Connection()4 conn.set_listener('', MyListener())5 conn.start()6 conn.connect('admin', 'password', wait=True)7 conn.send(body=' '.join(sys.argv[1:]), destination='/queue/test')8 conn.disconnect()

测试结果:test队列接收到消息数量增加了

stomp.Connection()默认是connect.StompConnection11(协议1.1),还可以可以选择1.0、1.2。

在官方代码中,stomp.Connection()的参数为空,实际上可以有很多参数,比如,设置Broker的IP地址和端口,如下:其中的host_and_ports就是设置IP和端口的。

IP和端口设置示例:

c = stomp.Connection([('127.0.0.1', 62613)])

这里我犯错了,端口我协程了8161(ActiveMQ的Web访问的端口),经查询(百度搜索到stackoverflow.com)才知,STOMP协议用的是61613(ActiveMQ的配置文件中):

ActiveMQ官网的四个测试:

发送消息到队列Queue属于 点对点模式,不可以重复消费;

发送消息到主题Topic属于 发布/订阅模式,可以重复消费;

1 #Send a Message to an Apache ActiveMQ Queue

2 importstomp3

4 conn =stomp.Connection10()5

6 conn.start()7

8 conn.connect()9

10 conn.send('SampleQueue', 'Simples Assim')11

12 conn.disconnect()13

14 #Receive a Message from an Apache ActiveMQ Queue

15 importstomp16 importtime17

18 classSampleListener(object):19 defon_message(self, headers, msg):20 print(msg)21

22 conn =stomp.Connection10()23

24 conn.set_listener('SampleListener', SampleListener())25

26 conn.start()27

28 conn.connect()29

30 conn.subscribe('SampleQueue')31

32 time.sleep(1) #secs

33

34 conn.disconnect()35

36 #Send a Message to an Apache ActiveMQ Topic

37 importstomp38

39 conn =stomp.Connection10()40

41 conn.start()42

43 conn.connect()44

45 conn.send('/topic/SampleTopic', 'Simples Assim')46

47 conn.disconnect()48

49 #Receive a Message from an Apache ActiveMQ Topic (1)

50 importstomp51 importtime52

53 classSampleListener(object):54 defon_message(self, headers, msg):55 print(msg)56

57 conn =stomp.Connection10()58

59 conn.set_listener('SampleListener', SampleListener())60

61 conn.start()62

63 conn.connect()64

65 conn.subscribe('/topic/SampleTopic')66

67 time.sleep(1) #secs

68

69 conn.disconnect()70

71 #Receive a Message from an Apache ActiveMQ Topic (2)

72 importstomp73 importtime74

75 classSampleListener(object):76 defon_message(self, headers, msg):77 print(msg)78

79 conn =stomp.Connection10()80

81 conn.set_listener('SampleListener', SampleListener())82

83 conn.start()84

85 conn.connect(headers={'client-id':'SampleClient'})86

87 conn.subscribe(destination='/topic/SampleTopic', headers={'activemq.subscriptionName':'SampleSubscription'})88

89 time.sleep(1) #secs

90

91 conn.disconnect()

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值