четверг, февраля 25, 2016

Client notification using ZeroMQ

Итак нам понадобилось реализовать механизм рассылки сообщений. Дополнительных требований таких как гарантированная доставка не предъявляется. Фактически нам подойдет примитивное сокетное взаимодействие.
На практике обычно стоит обратная задача, когда надо реализовать сервер выдерживающий большую нагрузку. Есть множество решений как ее решать, используя традиционные блокирующие сокеты, или что будет лучшим выбором, используя асинхронное взаимодействие NIO в экосистеме java. Например можно взять готовый клиент-серверный фремворк netty.
У нас же стоит обратная задача, сервер должен уведомлять большое количество клиентов.
В enterpise системах, для этой цели обычно используются сиcтемы MQ. Но в нашем pet-project можно использовать кое-что поинтереснее.


вторник, февраля 09, 2016

Authentication and authorization ActiveMQ

Итак, если вам надо управлять доступом к очередям на ActiveMQ, предоставляю пример как это можно сделать. Может кому пригодится. В файле activemq.xml делаем следующее
<plugins>
 <simpleAuthenticationPlugin>
  <users>
   <authenticationUser username="admin" password="admin" groups="producers,consumers,admins" />
   <authenticationUser username="producer" password="producer" groups="producers" />
   <authenticationUser username="consumer" password="consumer" groups="consumers" />
  </users>
 </simpleAuthenticationPlugin>
 <authorizationPlugin>
  <map>
   <authorizationMap>
    <authorizationEntries>
     <authorizationEntry queue=">" write="producers" read="consumers" admin="admins" />
     <authorizationEntry topic="ActiveMQ.Advisory.>" write="producers,consumers" read="producers,consumers" admin="admins" />
    </authorizationEntries>
    <tempDestinationAuthorizationEntry>
     <tempDestinationAuthorizationEntry write="producers" read="consumers" admin="admins" />
    </tempDestinationAuthorizationEntry>
   </authorizationMap>
  </map>
 </authorizationPlugin>
</plugins>
Теперь положить сообщение в очередь может пользователь producer, а прочитать consumer