gpt4 book ai didi

java - Spring AMQP : Queue with machine name

转载 作者:行者123 更新时间:2023-11-30 03:57:18 27 4
gpt4 key购买 nike

我正在使用 Spring AMQP 在 RabbitMQ 中创建队列。我想要一个队列,其名称包含运行应用程序的计算机的名称。因此,队列名称可能是“fooQueue.host1”或“fooQueue.host2”,具体取决于您运行应用程序的位置。

我已经找到了一种方法来做到这一点(详细信息如下),但似乎有点复杂。有没有更简单/更好/Spring-ier 的方法来实现这一点?

我的解决方案

首先创建一个bean来获取机器名称:

public class MachineNamePropertyBean {
public String GetMachineName() throws UnknownHostException {
InetAddress localMachine = InetAddress.getLocalHost();
return localMachine.getHostName();
}
}

然后在 Spring 配置中注册该 bean:

<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" />

最佳答案

除非使用 SpEL,否则没有其他解决方案:

<bean id="machineName" class="java.lang.String">
<constructor-arg value="#{T(java.net.InetAddress).localHost.hostName}"/>
</bean>

<rabbit:queue id="fooQueue"
name="fooQueue.#{ machineName }"
durable="false"
auto-delete="false"
exclusive="false" />

与您所做的相同,但没有新类并通过 SpEL 功能。

关于java - Spring AMQP : Queue with machine name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22847108/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com