Java 哪一个提供了更好的性能:带switch语句的单个JMS主题,还是单个主题?
我正在编写一个Spring引导应用程序,它将侦听一个或多个JMS主题。我们选择ActiveMQ作为JMS实现 我们主要关注的是性能和可伸缩性。我们预计每秒可能会收到数千条消息。我们提出了两个备选方案:Java 哪一个提供了更好的性能:带switch语句的单个JMS主题,还是单个主题?,java,jms,activemq,scalability,spring-jms,Java,Jms,Activemq,Scalability,Spring Jms,我正在编写一个Spring引导应用程序,它将侦听一个或多个JMS主题。我们选择ActiveMQ作为JMS实现 我们主要关注的是性能和可伸缩性。我们预计每秒可能会收到数千条消息。我们提出了两个备选方案: 使用单个主题和单个@JmsListener方法。在侦听器内部,检查JMS属性以确定处理消息的正确策略 @JmsListener(destination = "response", containerFactory = "myTopicFactory") public void onMessage(
@JmsListener(destination = "response", containerFactory = "myTopicFactory")
public void onMessage(Message message) throws IOException {
message.getProperty("message.type")
JmsHandler handler = messageStrategyMap.get(messageType);
handler.handle(message);
}
@JmsListener(destination = "responseType1", containerFactory = "myTopicFactory")
public void onMessage1(Message message) throws IOException {
// Handle message type 1
}
@JmsListener(destination = "responseType2", containerFactory = "myTopicFactory")
public void onMessage2(Message message) throws IOException {
// Handle message type 2
}
此外,欢迎提供有关容器工厂配置的任何建议。这取决于消息大小和数量。有了多个监听器,您还可以获得多个线程,因此在主题(以及线程)减少之前,运行速度可能会更快。我建议在你的代理系统上建立一个快速的测试和基准,你会有固定的数据进行比较