Как проверить отложенные/запланированные сообщения в Mnesia RabbitMQ

Я искал альтернативы для Quartz-scheduler.

Хотя это не полная замена, я пробовал Плагин RabbitMQ Delayed Messages (подходит для моего варианта использования).

Мне удалось получить работу по планированию, но я не мог просматривать задержанные сообщения (которые хранятся в Mnesia).

Есть ли способ проверить сообщения и/или количество сообщений в Mnesia?

Изменить: я сделал вывод, что сообщения хранятся в Mnesia из комментария от здесь.


person Karthik    schedule 14.09.2015    source источник
comment
Сообщения не сохраняются в MNESIA   -  person Gabriele Santomaggio    schedule 14.09.2015
comment
@Gas Думаю, да, я отредактировал вопрос.   -  person Karthik    schedule 14.09.2015
comment
Вы правы, извините. Этот плагин использует MNESIA   -  person Gabriele Santomaggio    schedule 14.09.2015


Ответы (2)


Невозможно проверить сообщения, которые RabbitMQ сохраняются в своей базе данных mnesia.

RabbitMQ не является универсальным хранилищем данных. Это специально созданный брокер сообщений и система очередей. Хранилище данных, которое у него есть, предназначено для обеспечения сохранения сообщений, а не для запросов и использования, как если бы это была собственная база данных.

person Derick Bailey    schedule 14.09.2015
comment
В целом да, но этот плагин, кажется, использует MNESIA для хранения сообщений. - person Gabriele Santomaggio; 14.09.2015
comment
как и весь RabbitMQ при хранении сообщений на диске. это не означает, что вы получите к нему доступ. если бы вы действительно хотели, вы, вероятно, могли бы использовать библиотеку mnesia. я бы настоятельно рекомендовал не делать этого. если вам нужна база данных, используйте базу данных, предназначенную для вашей системы. - person Derick Bailey; 14.09.2015
comment
с помощью простого клиента erlang можно проверить еще не доставленные сообщения. Только для этого плагина. - person Gabriele Santomaggio; 14.09.2015
comment
@DerickBailey по умолчанию RabbitMQ вообще не хранит сообщения в Mnesia. Этот плагин делает. У нас есть проблема, которая должна позволить пользователям проверять задержанные сообщения или, по крайней мере, видеть, сколько их: github.com/rabbitmq/rabbitmq-delayed-message-exchange/issues/3 - person old_sound; 28.09.2015

Чтобы просмотреть данные внутри MNESIA, вы можете:

  1. Напишите простую программу на Erlang как это, в результате вы получите:
  (rabbit@gabrieles-MBP)5>
    load:traverse_table_and_show('rabbit_delayed_messagerabbit@gabrieles-MBP').
    {delay_entry,
     {delay_key,1442258857832,
             {exchange,
               {resource,<<"/">>,exchange,<<"my-exchange">>},
                'x-delayed-message',true,false,false,
                [{<<"x-delayed-type">>,longstr,<<"direct">>}],
                undefined,undefined,             {[],[]}}},
         {delivery,false,false,<0.2008.0>,
            {basic_message,
                {resource,<<"/">>,exchange,<<"my-exchange">>},
                 [<<>>],
                {content,60,
                     {'P_basic',undefined,undefined,
                         [{<<"x-delay">>,signedint,100000}],
                         undefined,undefined,undefined,undefined,undefined,
                        undefined,undefined,undefined,undefined,undefined,
                       undefined},
    ..

ИЛИ таким образом:

  1. выполнить сеанс оболочки Erlang, используя: erl -set-cookie ABCDEFGHI -sname monitorNode@gabrielesMBP

    вы должны использовать тот же cookie, что и rabbitmq.

    Обычно $(HOME).erlang.cookie

    1. execute this command:observer:start(). and you should have this:

введите здесь описание изображения

Как только вы подключитесь к узлу rabbitmq, откройте Table Viewer и из меню Mnesia table как:

введите здесь описание изображения

Здесь вы можете увидеть свои данные:

введите здесь описание изображения

person Gabriele Santomaggio    schedule 14.09.2015