使用带有 stomp 的多个 header 标签提取数据
Extracting data using multiple header tags with stomp
我正在做一些将能源交易数据推送到 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)
ActiveMQ 的 selector
header 功能使用 JMS 1.1 规范中指定的 SQL 92 语法,并在 the JavaDoc 中描述 javax.jms.Message
。在您的情况下,您可以这样做:
JMSType in ('BOALF','BOD','SEL')
我正在做一些将能源交易数据推送到 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)
ActiveMQ 的 selector
header 功能使用 JMS 1.1 规范中指定的 SQL 92 语法,并在 the JavaDoc 中描述 javax.jms.Message
。在您的情况下,您可以这样做:
JMSType in ('BOALF','BOD','SEL')