【问题标题】:Receive single message from ActiveMQ queue using python STOMP使用 python STOMP 从 ActiveMQ 队列接收单个消息
【发布时间】:2017-10-10 05:07:48
【问题描述】:
  • 您好,我正在使用 stomp.py 模块发送和接收来自
    的消息 使用 python 的 ActiveMQ。
  • 在接收消息时,侦听器将在其中读取多条消息 指定的睡眠时间。
  • 但我只需要阅读一条消息。在java中是可能的。如何 我可以使用 STOMP 从 ActiveMQ 读取一条消息吗?

这是我正在测试的监听器脚本,

import stomp
import time

class SampleListener(object):
  def on_message(self, headers, msg):
    print(msg)

conn = stomp.Connection([('localhost',61613)]) 
conn.set_listener('SampleListener', SampleListener()) 
conn.start() 
conn.connect() 
conn.subscribe(destination='queue_name', id=1, ack='auto')
time.sleep(10) # secs 
conn.disconnect()

【问题讨论】:

  • 嗨@Karthikeyan ..我也试图实现相同的场景,但使用AWS Lambda函数,但我收到错误说明 - “无法导入模块'lambda_function':没有名为'stomp'的模块" 如何在我的 AWS Lambda 函数中添加 stomp 依赖项。
  • @Kally 您需要将所有依赖模块捆绑到 zip 文件中。
  • 谢谢@Karthikeyan 我使用了你的脚本,但我觉得我没有收到来自 MQ 的消息。任何建议

标签: python activemq stomp


【解决方案1】:

如果您只想使用 STOMP 一次读取一条消息,唯一的方法是使用 ack 模式,例如 client 或 client-individual ,以便客户端仅在发送显式消息时才发送新消息确认它拥有的那个。这还需要将预取值设置为一个,以便代理不会向客户端发送一批消息。

STOMP 确认模式在规范here 中定义。经纪人的 STOMP 支持文档是 here。客户端使用 ActiveMQ 文档中列出的 SUBSCRIBE 上的标头“activemq.prefetchSize”设置预取。

【讨论】:

  • 那是不正确的,至少对于 ActiveMQ 5.x STOMP 支持,该值为 'activemq.prefetchSize'
猜你喜欢
  • 2018-07-19
  • 2019-02-08
  • 2018-08-22
  • 1970-01-01
  • 1970-01-01
  • 2012-11-16
  • 2021-11-22
  • 2010-09-19
  • 1970-01-01
相关资源
最近更新 更多