ActiveMQ Request/Reply 模式:以下哪种方法被认为具有良好的性能?
ActiveMQ Request/Reply Pattern : which approach to follow in below considered good performance?
以下是目前正在使用的两种方法,请帮助我了解哪种方法更好!它是一个同步过程。
方法一:(不关闭任何连接对象)
Created connectionfactory in below class and maintaining pool of that class
ConnectionPool.java(使用代理 url 维护不同生产者池)
private static Map<String, Producer> producers
public static ProducerPool getInstance() {
if(INSTANCE==null){
producers = Maps.newConcurrentMap();
INSTANCE= new ProducerPool();
}
return INSTANCE;
}
Producer.java(这里创建的所有连接对象)
private ActiveMQConnection connection;
private ActiveMQSession session;
private MessageProducer producer;
return consumer.receive(5000);
因此,如果 100 个请求也来了,它将只维护一个连接、生产者、会话。
方法二:
(Closing all connection,session,producer per request and not a singleton)
方法三:
(Keeping only connection alive and closing session and producer per each req and recreate the same which is closed per request)
哪种方法适合提高性能?在请求回复模式的最大级别中,我们可以重用哪个(连接 r 会话 r 生产者)?
瞥了一眼:(谁能帮忙举个例子如何使用它!)
PooledConnectionFactory
请帮忙看看应该跟随哪一个!
如果不对将在生产中使用的相同系统配置进行性能测试,就无法回答这个问题。确定最佳性能的变数太多了。例如,要仅确定代理配置,您需要验证以下内容:
- CPU 数量?
- RAM 大小?
- 网卡接口数量?
- 用于存储后端的磁盘装载数?
- 使用的队列数?
- 生产者数量?
- 消费者人数?
- 邮件的大小?
- 消息量(msg/s)?
消息传递的最佳做法是而不是pre-tune。我接触的大多数客户实际上并没有很高的消息量。首先尝试简单的单连接、单会话和单生产者。如果它满足您的性能要求,那么请专注于获得 HA 和监控指标。与试图再调整 5-10% 的性能提升相比,获得这些权利会大大增加 return 您的时间投资,并导致更稳定的消息传递平台。
请记住:大多数消息传递系统将受到代理磁盘速度的限制,因此在客户端缓存对象仅在某些边缘情况下有益。
以下是目前正在使用的两种方法,请帮助我了解哪种方法更好!它是一个同步过程。
方法一:(不关闭任何连接对象)
Created connectionfactory in below class and maintaining pool of that class
ConnectionPool.java(使用代理 url 维护不同生产者池)
private static Map<String, Producer> producers
public static ProducerPool getInstance() {
if(INSTANCE==null){
producers = Maps.newConcurrentMap();
INSTANCE= new ProducerPool();
}
return INSTANCE;
}
Producer.java(这里创建的所有连接对象)
private ActiveMQConnection connection;
private ActiveMQSession session;
private MessageProducer producer;
return consumer.receive(5000);
因此,如果 100 个请求也来了,它将只维护一个连接、生产者、会话。
方法二:
(Closing all connection,session,producer per request and not a singleton)
方法三:
(Keeping only connection alive and closing session and producer per each req and recreate the same which is closed per request)
哪种方法适合提高性能?在请求回复模式的最大级别中,我们可以重用哪个(连接 r 会话 r 生产者)? 瞥了一眼:(谁能帮忙举个例子如何使用它!)
PooledConnectionFactory
请帮忙看看应该跟随哪一个!
如果不对将在生产中使用的相同系统配置进行性能测试,就无法回答这个问题。确定最佳性能的变数太多了。例如,要仅确定代理配置,您需要验证以下内容:
- CPU 数量?
- RAM 大小?
- 网卡接口数量?
- 用于存储后端的磁盘装载数?
- 使用的队列数?
- 生产者数量?
- 消费者人数?
- 邮件的大小?
- 消息量(msg/s)?
消息传递的最佳做法是而不是pre-tune。我接触的大多数客户实际上并没有很高的消息量。首先尝试简单的单连接、单会话和单生产者。如果它满足您的性能要求,那么请专注于获得 HA 和监控指标。与试图再调整 5-10% 的性能提升相比,获得这些权利会大大增加 return 您的时间投资,并导致更稳定的消息传递平台。
请记住:大多数消息传递系统将受到代理磁盘速度的限制,因此在客户端缓存对象仅在某些边缘情况下有益。