我们在经纪人网络中设置了4个ActiveMQ代理(每个代理在一个单独的服务器上运行)。大约有60个生产者。生产者使用JDNI从Glassfish查找ActiveMQ连接工厂。
Glassfish中配置的ActiveMQ URI如下:
failover:(tcp://phxgapm01:61616,tcp://phxgapm02:61616,tcp://phxgapm03:61616,tcp://phxgapm04:61616)?randomize=true&backup=false&maxReconnectAttempts=8
每个生成器进程执行javax.jms.ConnectionFactory的JNDI查找,然后创建1个javax.jms.Connection。当生成器运行时,它将定期创建一个javax.jms.Session和javax.jms.MessageProducer,将一些消息发送到队列,然后关闭Session和MessageProducer。
这就是所有背景 - 现在我的问题。从一些但不是所有的生产者,我们将看到如下的日志输出流:
2014-12-30 21:07:06,534 INFO FailoverTransport - Successfully connected to tcp://phxgapm03:61616 - [ActiveMQ Task-1]
2014-12-30 21:07:06,538 INFO FailoverTransport - Successfully connected to tcp://phxgapm04:61616 - [ActiveMQ Task-1]
2014-12-30 21:07:06,544 INFO FailoverTransport - Successfully connected to tcp://phxgapm02:61616 - [ActiveMQ Task-1]
2014-12-30 21:07:06,548 INFO FailoverTransport - Successfully connected to tcp://phxgapm04:61616 - [ActiveMQ Task-1]
2014-12-30 21:07:06,552 INFO FailoverTransport - Successfully connected to tcp://phxgapm01:61616 - [ActiveMQ Task-1]
2014-12-30 21:07:06,556 INFO FailoverTransport - Successfully connected to tcp://phxgapm02:61616 - [ActiveMQ Task-1]
2014-12-30 21:07:06,561 INFO FailoverTransport - Successfully connected to tcp://phxgapm02:61616 - [ActiveMQ Task-1]
2014-12-30 21:07:06,565 INFO FailoverTransport - Successfully connected to tcp://phxgapm01:61616 - [ActiveMQ Task-1]
2014-12-30 21:07:06,568 INFO FailoverTransport - Successfully connected to tcp://phxgapm02:61616 - [ActiveMQ Task-1]
2014-12-30 21:07:06,572 INFO FailoverTransport - Successfully connected to tcp://phxgapm04:61616 - [ActiveMQ Task-1]
2014-12-30 21:07:06,577 INFO FailoverTransport - Successfully connected to tcp://phxgapm03:61616 - [ActiveMQ Task-1]
2014-12-30 21:07:06,581 INFO FailoverTransport - Successfully connected to tcp://phxgapm04:61616 - [ActiveMQ Task-1]
2014-12-30 21:07:06,586 INFO FailoverTransport - Successfully connected to tcp://phxgapm01:61616 - [ActiveMQ Task-1]
2014-12-30 21:07:06,590 INFO FailoverTransport - Successfully connected to tcp://phxgapm03:61616 - [ActiveMQ Task-1]
2014-12-30 21:07:06,594 INFO FailoverTransport - Successfully connected to tcp://phxgapm04:61616 - [ActiveMQ Task-1]
对于一些生产者,我们会每10分钟看到一次这样的产品 - 对于其他生产商来说,它的频率较低。更令人困惑的是,所有这些生产者都使用相同的代码进行JMS消息传递 - 因此,虽然生产者可能会在创建会话和消息生成器的频率方面有所不同,但他们都使用相同的代码,并且只创建了一个连接对象。
通过阅读文档,我的理解是故障转移传输将打开与1个代理的连接(在我们的例子中随机选择)。为什么我们看到这个连接流(在60ms内与每个代理的多个连接)?使用netstat我们可以看到这些连接。这是正常的吗?如果没有,有什么可能导致这个的建议吗?
答案 0 :(得分:1)
如果没有提出activeMQ日志级别,那么就有一些推测空间,但是:
通过增加应用程序中的loglevel,您将能够确切地看到哪个层启动了这个以及出于什么原因。可能的原因是:"所有连接都已过期,并且池将minIdleConnection计数恢复到最小值&#34 ;; "您的应用程序中的一些传入请求需要一次发送大量消息,因此您的池会创建它们"。