Извлечение данных с использованием нескольких тегов заголовка с помощью Stomp - PullRequest
0 голосов
/ 25 февраля 2019

Я работаю над передачей данных по торговле энергией в 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 голосов
/ 26 февраля 2019

Функция заголовка selector в ActiveMQ использует синтаксис SQL 92, как указано в спецификации JMS 1.1 и описано в JavaDoc для javax.jms.Message.В вашем случае вы можете сделать это:

JMSType in ('BOALF','BOD','SEL')
...