从 python STOMP 创建临时队列

By simon at 2019-05-16 • 0人收藏 • 60人看过

我想为 python 创建临时队列(stomp)。 在文档中,他们提供了回复标题。 但不会产生任何临时队列。 用 python 编写的生产者和消费者文件。 Python STOMP 真的有实现临时队列的方法吗。

我正在发送一条带有回复标题的消息。 在消息侦听器上的订阅者中,我正在检查 reply-to 标头是否存在,如果存在,那么它将发送响应到 reply-to 标头值。

队列生成器

Import stomp import json class QueueProducer: def init (self) : self.hosts ['somevalue'] self.ports ['somevalue'] self.ENCODE"UTF-8"self.param zip (self.hosts,self.ports) self.conn stomp. Connection11(self.conn param,encoding self.ENCODE FORMAT) self.conn.start () self.conn.connect (wait True) except as ex: raise exdef send msg (self,message,queue name,header"JMSDeliveryMode":"Persistent","jmspriauthority": 4}) : try: message json.dumps (message) self.conn.send (destination'/ queue / {}'). 除了 exceptionas ex: raise ex if name"main": obj QueueProducer () from datetime import datetime obj.send msg (str (datetime. now ()) ,"MessageLife",header"JMSDeliveryMode":"Persistent","jmspriauthority": 4,'reply-to':"destination",})之外,都是格式化(队列名称) ,正文消息,头部头部)

排队消费者:

导入 sys 导入时间导入 json ACK client individual"client-individual"类 CustomListener (stomp。 Connectionlistener) : def init (self,conn) : self.conn on error (self,headers,message) : print ('received an error: :% s'% message) def on message (self,headers,message) : try: message json.loads (message) response [1,2,3] self.conn.ack (headers.get ("message-id") ,int (headers.get ("subscription"))) if'reply-to'in: self.conn.send (destination'/ queue / {}'. Format (headers.get ("reply-to") ,body json.dump (response))除了 Exception as ex: print ("Exception nack") class QueueConsumer: def init (self) : try: self.hosts ["some value",] self.ports ["some value",] self.ENCODE FORMAT"utf-8"self.conn (self.hosts,self.ports) self.stomp。 Connection11(self.conn param,encoding self.ENCODE FORMAT) self.conn.start () self.conn.connect (wait True,) self.conn.set listener (",CustomListener (self.conn))除了 ex: raise ex exconsume msg (self) : try: while True: self.conn.subscribe ('/ queue / {}'。 格式(self.queue name) ,1,ACK client individual,header"activemq.prefetchSize": 1}) time.sleep (500) self.conn.unsubscribe (1) except as ex: raise ex def execute (self) : try: self.queue name"sample queue"self.consume msg () self.close connection () except as ex: raise ex if name"main": obj obeconsumer () obj.execute ()

我真的很想知道 reply-to 标头是否像 java 一样创建了一个临时队列。 (createTemporaryQueue 方法)或者我们必须手动创建队列(在发送者或消费者中)。 如果任何人有 python STOMP.py 中的代码样本,它将非常有用。

1 个回复 | 最后更新于 2019-05-16
2019-05-16   #1

消息头没有什么特别的名称答复在 STOMP 中。 这个协议规范没有提到一个名为答复,它也没有提到任何关于出于任何原因创建临时队列的内容。

也就是说,ActiveMQ 实现了对 STOMP 的一些扩展,因此如果您使用目的地开头是/ temp-queue / 然后创建一个临时队列。

登录后方可回帖

Loading...