Pull to refresh

AMQP — отладка приложений

Reading time 2 min
Views 5.2K
Рзработка сложных систем обмена сообщениями по протоколу AMQP приходится не только отлаживать код, но и разбираться в структуре и роутинге сообщений.
Иногда трудно понять причину того или иного зависания или отсутствия сообщения. Однако, разработчиками RabbitMQ включен в составе пакета rabbitmq-java-client есть класс Tracer,
который позволяет в консольном режиме просматривать информацию об обмене.



Tracer представляет собой AMQP-прокси, который слушает клиентский порт (5673 default) и передает их на серверный (5672 default) и обратно, отображая информацию на консоли.

Инсталляция.
в три шага:

Работаем

//запускаем
java -cp rabbitmq-client.jar:commons-io-1.2.jar:commons-cli-1.1.jar com.rabbitmq.tools.Tracer
//или
runjava.sh com.rabbitmq.tools.Tracer listenPort connectHost connectPort listenPort
- входящий port AMQP ( default 5673)
- connectHost - host где запущен RabbitMQ ( default localhost).
- connectPort - порт, который слушает прокси ( default 5672).

далее смотрим:
$cnn = new APMQConection();
1257461452674: conn#74 ch#0 <- {#method<connection.start>(version-major=8,version-minor=0,server properties={product=RabbitMQ, platform=Erlang/OTP, information=Licensed under the MPL. See www.rabbitmq.com, copyright=Copyright (C) 2007-2009 LShift Ltd., Cohesive Financial Technologies LLC., and Rabbit Technologies Ltd., version=1.5.4},mechanisms=PLAIN AMQPLAIN,locales=en_US),null,""}
1257461452681: conn#74 ch#0 -> {#method<connection.start-ok>(client-properties={},mechanism=PLAIN,response=guestguest,locale=en_US),null,""}
1257461452682: conn#74 ch#0 <- {#method<connection.tune>(channel-max=0,frame-max=131072,heartbeat=0),null,""}
1257461452682: conn#74 ch#0 -> {#method<connection.tune-ok>(channel-max=0,frame-max=131072,heartbeat=0),null,""}
1257461452683: conn#74 ch#0 -> {#method<connection.open>(virtual-host=/,capabilities=,insist=true),null,""}
1257461452684: conn#74 ch#0 <- {#method<connection.open-ok>(known-hosts=akalend.local:5672),null,""}
1257461452684: conn#74 ch#1 -> {#method<channel.open>(out-of-band=),null,""}
1257461452684: conn#74 ch#1 <- {#method<channel.open-ok>(),null,""}

  • первая колонка — timestamp
  • вторая: логический номер коннекции
  • третий — номар канала. На одном сокете можно открыть несколько логических каналов.
  • четвертый: знаки
    -> запрос AMQP брокеру
    <- ответ AMQP брокера
  • далее идут : #method<channel.open-ok> - название метода open-ok { (параметры), заголовок, тело}
    (...) - параметры метода
    #contentHeader - заголовок типа basic
    тело самого сообщения

Tags:
Hubs:
+1
Comments 4
Comments Comments 4

Articles