我得到了這種情況,其中我試圖用SSL運行activemq,並且看到SSL異常。爲什麼activemq與自己打開套接字
這是從我的activemq.xml
除了。
<transportConnectors>
<transportConnector name="openwire" uri="tcp://0.0.0.0:${JMS_PORT}" />
<transportConnector name="stomp" uri="stomp://0.0.0.0:${JMS_STOMP_PORT}"/>
<transportConnector name="ssl" uri="ssl://0.0.0.0:${JMS_SSL_PORT}"/>
</transportConnectors>
<sslContext>
<sslContext
keyStore="file:${JMS_KEY_STORE}"
keyStorePassword="${JMS_KEY_STORE_PASSWORD}"
trustStore="file:${JMS_TRUST_STORE}"
trustStorePassword="${JMS_TRUST_STORE_PASSWORD}"
/>
</sslContext>
<networkConnectors>
<networkConnector
name="host1 and host2"
uri="static://(${JMS_X_SITE_CSV_URL})?wireFormat=ssl&wireFormat.maxInactivityDuration=30000"
dynamicOnly="true"
suppressDuplicateQueueSubscriptions = "true"
networkTTL="1"
/>
</networkConnectors>
而變量的值如下。現在
JMS_PORT=10029
JMS_STOMP_PORT=10030
JMS_SSL_PORT=10031
JMS_X_SITE_CSV_URL=tcp://localhost:10031/
,根據上述的結構,我看到錯誤的javax.net.ssl.SSLException
如下:
2016-09-20 14:47:48,619 | ERROR | Could not accept connection from tcp://localhost:54869: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? | org.apache.activemq.broker.TransportConnector | ActiveMQ BrokerService[divinedragonbox] Task-3
2016-09-20 14:47:49,628 | ERROR | Could not accept connection from tcp://localhost:54871: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? | org.apache.activemq.broker.TransportConnector | ActiveMQ BrokerService[divinedragonbox] Task-9
2016-09-20 14:47:51,639 | ERROR | Could not accept connection from tcp://localhost:54893: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? | org.apache.activemq.broker.TransportConnector | ActiveMQ BrokerService[divinedragonbox] Task-12
2016-09-20 14:47:55,645 | ERROR | Could not accept connection from tcp://localhost:54902: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? | org.apache.activemq.broker.TransportConnector | ActiveMQ BrokerService[divinedragonbox] Task-20
2016-09-20 14:48:03,653 | ERROR | Could not accept connection from tcp://localhost:54906: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? | org.apache.activemq.broker.TransportConnector | ActiveMQ BrokerService[divinedragonbox] Task-31
2016-09-20 14:48:19,661 | ERROR | Could not accept connection from tcp://localhost:54915: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? | org.apache.activemq.broker.TransportConnector | ActiveMQ BrokerService[divinedragonbox] Task-50
錯誤消息看着神祕的在第一,但後來就很有意義。當我實際嘗試連接到SSL端口10031
時,我配置了網絡連接器tcp://
。此問題導致套接字保留在CLOSE_WAIT
中,從而爲ActiveMQ本身使用了大量內存。
下面是這個問題的懸掛插座的樣子。
tcp6 0 0 127.0.0.1:54869 127.0.0.1:10031 CLOSE_WAIT 4807/java
tcp6 0 0 127.0.0.1:54871 127.0.0.1:10031 CLOSE_WAIT 4807/java
tcp6 1 0 127.0.0.1:54893 127.0.0.1:10031 CLOSE_WAIT 4807/java
tcp6 0 0 127.0.0.1:54902 127.0.0.1:10031 CLOSE_WAIT 4807/java
tcp6 1 0 127.0.0.1:54915 127.0.0.1:10031 CLOSE_WAIT 4807/java
tcp6 1 0 127.0.0.1:54922 127.0.0.1:10031 CLOSE_WAIT 4807/java
所以,我固定
JMS_X_SITE_CSV_URL
到ssl://localhost:10031/
和問題就解決了。
現在,這是我的問題(對不起,關於這裏來的長解釋)。
爲什麼activemq自己打開套接字?
而在這個問題上工作了我就在想,該插座由生產者開/消費者嘗試讀取/寫入數據從隊列,但它是非常晚了,當我只運行的ActiveMQ過程(沒有其他的java進程)來隔離它正在與自己打開連接。
我得到這一點,這是他們的方式我想要它。我的問題涉及爲什麼activemq本身連接到'10031'端口。 – divinedragon