使用带有stomp的多个标头标签提取数据

时间:2019-02-25 14:52:43

标签: python 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)

1 个答案:

答案 0 :(得分:0)

ActiveMQ的selector标头功能使用JMS 1.1规范中指定的{92} the JavaDoc中描述的SQL 92语法。您可以这样做:

javax.jms.Message