Я работаю с Spring AMQP для создания очередей в RabbitMQ. Я хотел бы иметь очередь, имя которой включает имя машины, на которой работает приложение. Таким образом, имя очереди может быть «fooQueue.host1» или «fooQueue.host2» в зависимости от того, где вы запускаете приложение.
Я нашел способ сделать это (подробно описанный ниже), но это кажется немного сложным. Есть ли более простой/лучший/весенний способ сделать это?
Мое решение
Сначала создайте bean-компонент для получения имени машины:
public class MachineNamePropertyBean {
public String GetMachineName() throws UnknownHostException {
InetAddress localMachine = InetAddress.getLocalHost();
return localMachine.getHostName();
}
}
Затем зарегистрируйте компонент в конфигурации Spring:
<bean id="machineNameBean" class="com.example.myapp.MachineNamePropertyBean" />
затем используйте его в конфигурации Spring AMQP следующим образом:
<rabbit:queue id="fooQueue"
name="fooQueue.#{ machineNameBean.GetMachineName() }"
durable="false"
auto-delete="false"
exclusive="false" />