【发布时间】:2019-10-28 09:03:21
【问题描述】:
我设置了一个 activemq,其中包含对 Zendesk 的大量 api 调用。我需要检索这些呼叫,然后将它们完全从队列中删除。 conn.ack 似乎不起作用!
我正在使用 python3 和最新版本的 stomp。我用它来制作初始连接脚本:https://github.com/jasonrbriggs/stomp.py/wiki/Simple-Example
https://jasonrbriggs.github.io/stomp.py/api.html 在此文档中,您似乎必须标记 .subscribe 方法的“id”标签。您使用该 ID 调用 conn.ack,但您还添加了消息 ID 作为参数。我发现消息的标头是使用侦听器函数检索的。我把它们打印出来了,它们看起来像这样:
ID:[我的工作站 id].local-49557-1560302581785-5:58:-1:1:61592
我尝试在 ID: 之后正则表达式输出整个字符串,然后我尝试正则表达式仅输出字符串末尾的数字(它看起来可能是唯一的数字),但是当我执行 conn.ack ( matchObj.group(1), 4),队列计数没有改变,我没有得到关于为什么没有的反馈。
到目前为止,连接工作得非常好——我只是无法发送这些确认。
import stomp
import time
import re
class SampleListener(object):
def on_message(self, headers, msg):
regex = r"ID:.*1:1:(.*)"
print(msg)
print(headers['message-id'])
matchObj = re.match ( regex, headers['message-id'], re.M|re.I)
print (matchObj.group(1))
conn.ack (matchObj.group(1), 4)
conn = stomp.Connection10()
conn.set_listener('SampleListener', SampleListener())
conn.start()
conn.connect()
conn.subscribe('zendeskqueue', id=4, ack='client')
time.sleep(1) # secs
conn.disconnect()
上面的代码没有错误,只是存在没有输出。
【问题讨论】:
-
你需要做一些调试,收集一些日志,客户端和代理,否则很难说发生了什么
-
任何线索如何获得比我目前拥有的更多的详细信息?以上没有任何结果