ActiveMQ 故障转移传输 - 为什么有这么多连接?
我们在代理网络中设置了 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个连接对象。
通过阅读文档,我的理解是故障转移传输将打开与其中 1 个代理的连接(在本例中为随机选择)。为什么我们会看到这种连接流(在 60 毫秒内与每个代理建立多个连接)?使用netstat,我们可以看到这些连接。这正常吗?如果没有,关于可能导致这种情况的任何建议?