import com.ckkloverdos.props.Props
import com.google.common.eventbus.Subscribe
-import gr.grnet.aquarium.{Aquarium, Configurable}
+import gr.grnet.aquarium.{AquariumAwareSkeleton, Aquarium, Configurable}
import gr.grnet.aquarium.converter.StdConverters
import gr.grnet.aquarium.actor.RouterRole
import gr.grnet.aquarium.connector.rabbitmq.RabbitMQConsumer
import gr.grnet.aquarium.util.{Tags, Loggable, Lifecycle}
import gr.grnet.aquarium.util.sameTags
-import gr.grnet.aquarium.service.event.{StoreIsAliveBusEvent, StoreIsDeadBusEvent}
+import gr.grnet.aquarium.service.event.{AquariumCreatedEvent, StoreIsAliveBusEvent, StoreIsDeadBusEvent}
import gr.grnet.aquarium.connector.rabbitmq.service.{PayloadHandlerFutureExecutor, PayloadHandlerPostNotifier}
import gr.grnet.aquarium.connector.rabbitmq.conf.RabbitMQKeys.RabbitMQConfKeys
import gr.grnet.aquarium.connector.rabbitmq.conf.RabbitMQKeys
* @author Christos KK Loverdos <loverdos@gmail.com>
*/
-class RabbitMQService extends Loggable with Lifecycle with Configurable {
+class RabbitMQService extends Loggable with Lifecycle with Configurable with AquariumAwareSkeleton {
@volatile private[this] var _props: Props = Props()(StdConverters.AllConverters)
@volatile private[this] var _consumers = List[RabbitMQConsumer]()
def propertyPrefix = Some(RabbitMQKeys.PropertiesPrefix)
- def aquarium = Aquarium.Instance
-
def eventBus = aquarium.eventBus
def resourceEventStore = aquarium.resourceEventStore
*/
def configure(props: Props) = {
this._props = props
+ }
+
+ @Subscribe
+ override def awareOfAquariumEx(event: AquariumCreatedEvent) {
+ super.awareOfAquariumEx(event)
- doConfigure()
+ aquarium.eventBus.addSubscriber(this)
+
+ doSetup()
}
- private[this] def doConfigure(): Unit = {
+ private[this] def doSetup(): Unit = {
val postNotifier = new PayloadHandlerPostNotifier(logger)
val rcHandler = new ResourceEventPayloadHandler(aquarium, logger)
rccc.queueName
))
new RabbitMQConsumer(
+ aquarium,
rccc,
rcHandler,
futureExecutor,
imcc.queueName
))
new RabbitMQConsumer(
+ aquarium,
imcc,
imHandler,
futureExecutor,
}
def start() = {
- aquarium.eventBus.addSubscriber(this)
-
safeStart()
}