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 получает всё, а я - ничего. Вложение: Вложение: (остальные 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/ |