Я использую pythonsompt.py
для доступа к моему серверу ActiveMQ
.Как назначить сообщение о задержке в activemq с помощью клиента python stomp.py
Создал клиент и отправлял данные. Но я должен Schedule Delay Message.
import time
import sys
import stomp
class MyListener(stomp.ConnectionListener):
def on_error(self, headers, message):
print('received an error "%s"' % message)
def on_message(self, headers, message):
print('received a message "%s"' % message)
conn = stomp.Connection()
conn.set_listener('', MyListener())
conn.start()
conn.connect('admin', 'password', wait=True)
conn.subscribe(destination='/queue/test', id=1, ack='auto')
conn.send(body=' '.join(sys.argv[1:]), destination='/queue/test')
time.sleep(2)
conn.disconnect()
проверить пример JAVA, где пользователь может пройти headers
. send
также принимает headers
как аргумент в stomp.py
, но я не знаю, какой ключ мне должен пройти.
stomp.constants
У меня нет заголовков для задержки.
Пробовал заголовки AMQ_SCHEDULED_DELAY
, но, похоже, не работает.
import time
import sys
import stomp
class MyListener(stomp.ConnectionListener):
def on_error(self, headers, message):
print('received an error "%s"' % message)
def on_message(self, headers, message):
print "Time for message receive: %s", time.strftime('%H:%M:%S')
print('received a message "%s"' % message)
conn = stomp.Connection()
conn.set_listener('', MyListener())
conn.start()
conn.connect(wait=True)
conn.subscribe(destination='/queue/test', id=1, ack='auto')
print "Time for send message: %s", time.strftime('%H:%M:%S')
conn.send(body=' '.join(sys.argv[1:]), destination='/queue/test', headers={'AMQ_SCHEDULED_DELAY': 100000})
time.sleep(2)
conn.disconnect()
Выход:
[email protected]$ python /tmp/test.py this is test
Time for send message: %s 14:03:34
Time for message receive: %s 14:03:34
received a message "this is test"
Привет Тим, но если мы изменим это в 'apache', то она будет применяться ко всем сообщениям? Мне нужно отправить только несколько сообщений с 'delay', все остальные должны обрабатываться с обычным выполнением. – Nilesh
. Я не совсем понимаю ваш вопрос, вы помещаете заголовки в свои сообщения STOMP, когда хотите применить задержку, не знаете, что такое apache вещь, о которой вы спрашиваете, составляет около –
Если я использую 'conn.send (..., ..., headers = {'AMQ_SCHEDULED_DELAY': 10})', то это закроет мое сообщение до 10 секунд? – Nilesh