我正在做一些将能源交易数据推送到ActiveMQ的工作。我正在使用stomp.py库来捕获数据。下面的代码可以工作并提取带有数据标签“ BOALF”的所有数据。我需要使代码搜索多个标签(共10个)。例如标签“ BOD”和“ SEL”。
我需要重写代码headers={'selector': "JMSType='BOALF'"}
,但是由于所有尝试都导致错误,因此我不确定如何包含多个标签。
import stomp
import time
class MyListener(stomp.ConnectionListener):
def on_error(self, headers, message):
print('received an error "%s"' % message)
def on_message(self, headers, message):
print(type(headers))
for k, v in headers.items():
print('header: key %s , value %s' % (k, v))
print('received a message "%s"' % message)
with open("messages.log", "a") as logfile:
logfile.write(message)
conn = stomp.Connection12(host_and_ports=[('api.bmreports.com', 61613)], use_ssl=True)
conn.set_listener('', MyListener())
conn.start()
# Api key is being passed as both username and password.
conn.connect('XXXXXXXXXX', 'XXXXXXXXXX', True)
conn.subscribe(destination='/topic/bmrsTopic', ack='auto', id=545668,
headers={'selector': "JMSType='BOALF'"})
while conn.is_connected():
time.sleep(1)
答案 0 :(得分:0)
ActiveMQ的selector
标头功能使用JMS 1.1规范中指定的{92} the JavaDoc中描述的SQL 92语法。您可以这样做:
javax.jms.Message