forum.bitel.ru
http://forum.bitel.ru/

ActiveMQ topic не работает подписка
http://forum.bitel.ru/viewtopic.php?f=19&t=8424
Страница 1 из 1

Автор:  Cromeshnic [ 06 сен 2013, 13:19 ]
Заголовок сообщения:  ActiveMQ topic не работает подписка

Требуется помощь знатоков.

Пишу собственный класс для BGInetAccounting, который подписывается на событие InetAccountingEvent, чтобы независимо считать трафики.
Делаю так:

Код:
public class QuotaCollector implements EventListener<InetAccountingEvent>, Lifecycle {
    ...

    @Override
    public void start() throws Exception {
        EventProcessor ep = EventProcessor.getInstance();
        ep.addListener(this, InetAccountingEvent.class, this.accounting.moduleId, null);
        this.initWorkers();
    }

    @Override
    public void notify(InetAccountingEvent event, EventListenerContext eventListenerContext) throws BGException {
        logger.debug("caught event InetAccountingEvent: "+event);
        ...
    }

    ...
}



В логах вижу, что на событие я подписался, события ходят, но я их не получаю (нет строчек "caught event InetAccountingEvent")

Код:
all.log:radius 09-06/15:11:21 DEBUG [main] EventProcessor - Add ru.dsi.bgbilling.modules.inet.accounting.quota.QuotaCollector@17d2f0e to BG.Event.ru.bitel.bgbilling.modules.inet.accounting.event.InetAccountingEvent WHERE moduleId=26
all.log:radius 09-06/15:11:21 DEBUG [main] EventProcessor - Add ru.bitel.bgbilling.modules.inet.radius.InetRadiusProcessor@bdb375 to BG.Event.ru.bitel.bgbilling.modules.inet.accounting.event.InetAccountingEvent WHERE moduleId=26
all.log:mq 09-06/15:15:19 DEBUG [evpool-pblsh-p-4-t-1] EventProcessor - Publish: Event[pool:ru.bitel.bgbilling.modules.inet.accounting.event.InetAccountingEvent] timestamp: 1378448119340; moduleId: 26; pluginId: -1; cid: -1; scid: -1; userId: -1
all.log:mq 09-06/15:16:40 DEBUG [evpool-pblsh-p-4-t-2] EventProcessor - Publish: Event[pool:ru.bitel.bgbilling.modules.inet.accounting.event.InetAccountingEvent] timestamp: 1378448200366; moduleId: 26; pluginId: -1; cid: -1; scid: -1; userId: -1
all.log:mq 09-06/15:16:40 DEBUG [evpool-pblsh-p-4-t-2] EventProcessor - Publish: Event[pool:ru.bitel.bgbilling.modules.inet.accounting.event.InetAccountingEvent] timestamp: 1378448200993; moduleId: 26; pluginId: -1; cid: -1; scid: -1; userId: -1


Смотрю по jmx - так и есть: стандартный consumer получает всё, а я - ничего.

Вложение:
consumer1.png
consumer1.png [ 75.09 КБ | Просмотров: 4300 ]

Вложение:
consumer2.png
consumer2.png [ 72.78 КБ | Просмотров: 4300 ]

(остальные 2 подписчика к делу отношения не имеют - они для другого moduleId)

Почему так? Это же топик, а не очередь, вроде должны получать оба подписчика?

Автор:  Amir [ 06 сен 2013, 16:22 ]
Заголовок сообщения:  Re: ActiveMQ topic не работает подписка

Цитата:
@EventType(noLocal=true)
Событие о состоянии сессии. Приходит всем серверам, за исключением того, кто его отправил
AccountingSession start|stop.


Автор:  Cromeshnic [ 09 сен 2013, 08:53 ]
Заголовок сообщения:  Re: ActiveMQ topic не работает подписка

Ясно.
Кстати, update тоже ходят.
Только вот я найти не могу, где это ограничение зашито:
Цитата:
... за исключением того, кто его отправил

???

Хочу реализовать аналог Cisco SCSM Quota Manager, только в биллинге. sliceInterval, penalty period, вот это всё...
Сейчас пользуемся цисковским, со данными о трафике из SCE, но получается, что клиентское полиси на SCE рулится частично биллингом из тарифа, а частично - Quota Manager-ом. Хочется засунуть всю логику в тарифное дерево.
В биллинге можно менять скорости клиенту с помощью диапазонов с разбивкой по часам. Хочется более гибко, как это сделано у циско - учитывается трафик, потреблённый за последние x маленьких периодов-слайсов (скажем, 10 минут). Т.е. нужно вести в памяти данные с разбивкой по маленьким диапазонам.
Всё реализуемо, но мне нужно как-то ловить сам трафик. Хотел использовать InetAccountingEvent, хоть он и генерится только для call-сессий. Но тогда придётся ловить его в Access, что наверное не очень логично. В-общем, буду думать.

Автор:  Cromeshnic [ 09 сен 2013, 09:58 ]
Заголовок сообщения:  Re: ActiveMQ topic не работает подписка

А, всё, вижу:
Цитата:
The consumer NoLocal attribute allows a consumer to inhibit the delivery of messages published by its own connection.

Автор:  Amir [ 16 сен 2013, 14:39 ]
Заголовок сообщения:  Re: ActiveMQ topic не работает подписка

Получилось ловить трафик?

Автор:  Cromeshnic [ 16 сен 2013, 14:50 ]
Заголовок сообщения:  Re: ActiveMQ topic не работает подписка

Ага, только костыльно - ловлю InetAccountingEvent в BGInetAccess и переправляю обратно в BGInetAccounting в виде MyInetAccountingEvent
:)

А в целом всё работает, сейчас отлаживаю, исправляю баги.

Идея в том, чтобы менять скорость клиенту наподобие тарифных диапазонов, но не по часам/дням, а в зависимости от трафика за последние X минут (вернее, X диапазонов-slice-ов по Y минут).

При понижении клиент находится в "плохом" профиле определённое время (penalty time), а не до конца часа/дня, как в BG, а потом его выкидывает на предыдущий уровень (или на 2-3 предыдущих уровня - в зависимости от того, насколько хорошо он себя вёл за это время).

Автор:  Cromeshnic [ 17 сен 2013, 08:10 ]
Заголовок сообщения:  Re: ActiveMQ topic не работает подписка

А ещё проблемка с InetAccountingEvent - для stop-пакета в событии не передаются counterTraffics

Автор:  Cromeshnic [ 23 сен 2013, 12:54 ]
Заголовок сообщения:  Re: ActiveMQ topic не работает подписка

А нельзя ли в InetAccountingEvent для стоп-пакетов тоже передавать counterTraffics?

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/