-
Notifications
You must be signed in to change notification settings - Fork 72
Cookbook
Is there something you'd like to do that's not included here? Open an issue.
When instantiating the RabbitControl actor, it is possible to provide a specific connection com.typesafe.config.Config
block (thus customizing the location from which the actor pulls its configuration).
If you needed to connect to multiple vhosts in an application, you could achieve it via the following:
In your application's application.conf
:
op-rabbit {
topic-exchange-name = "op-rabbit-testeroni"
vhost1 {
hosts = ["127.0.0.1"]
username = "guest"
password = "guest"
connection-timeout = 1s
virtual-host = "vhost1"
port = 5672
}
vhost2 {
hosts = ["127.0.0.1"]
username = "guest"
password = "guest"
connection-timeout = 1s
virtual-host = "vhost2"
port = 5672
}
}
Then, instantiate the RabbitControl actors as follows:
val config = com.typesafe.config.ConfigFactory.load()
val rabbitVHost1 = actorSystem.actorOf(
new RabbitControl(
ConnectionParams.fromConfig(
config.getConfig("op-rabbit.vhost1"))))
val rabbitVHost2 = actorSystem.actorOf(
new RabbitControl(
ConnectionParams.fromConfig(
config.getConfig("op-rabbit.vhost2"))))
When you wish to have a consumer subscribe on vhost1, provide it the rabbitVHost1
control actor; for vhost2 provide rabbitVhost2
similarly.
RabbitControl can accept a ConnectionParams object, directly: http://spingo-oss.s3.amazonaws.com/docs/op-rabbit/current/index.html#com.spingo.op_rabbit.RabbitControl
import com.rabbitmq.client.{Address, ConnectionFactory}
val connectionParams = ConnectionParams(
hosts = List(new Address("127.0.0.1", ConnectionFactory.DEFAULT_AMQP_PORT)),
username = "admin",
password = "very-secret"
)
actorSystem.actorOf(Props { new RabbitControl(connectionParams) })