【发布时间】:2021-05-16 09:04:07
【问题描述】:
有一个 ActiveMQ 服务器在 CentOS 机器上工作。我可以使用 OpenWire JMS 客户端通过 TCP 和 HTTP 连接和使用消息。但是,当我尝试使用 ActiveMQ 测试 STOMP 客户端时,它会在 connection.receieve 上引发此异常;
java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
at java.net.SocketInputStream.read(SocketInputStream.java:171)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at java.net.SocketInputStream.read(SocketInputStream.java:224)
at java.io.DataInputStream.readByte(DataInputStream.java:265)
at org.apache.activemq.transport.stomp.StompWireFormat.readHeaderLine(StompWireFormat.java:174)
at org.apache.activemq.transport.stomp.StompWireFormat.readLine(StompWireFormat.java:167)
at org.apache.activemq.transport.stomp.StompWireFormat.parseAction(StompWireFormat.java:200)
at org.apache.activemq.transport.stomp.StompWireFormat.unmarshal(StompWireFormat.java:112)
at org.apache.activemq.transport.stomp.StompConnection.receive(StompConnection.java:77)
at tr.com.estherial.stomplistener.StompListener.main(StompListener.java:25)
监听类
import org.apache.activemq.transport.stomp.Stomp;
import org.apache.activemq.transport.stomp.StompConnection;
import org.apache.activemq.transport.stomp.StompFrame;
public class StompListener {
public static void main(String[] args) {
StompConnection connection = new StompConnection();
try {
connection.open("host", 61613);
connection.connect("admin", "admin", "test");
connection.subscribe("TEST_TOPIC", Stomp.Headers.Subscribe.AckModeValues.CLIENT);
connection.begin("test");
while (true) {
try {
StompFrame message = connection.receive(10000);
System.out.println(String.format("%s - Receiver: received '%s'", new Date(), message.getBody()));
} catch (SocketTimeoutException e) {
// ignore
e.printStackTrace();
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
这是activemq.xml中的连接器:
<transportConnectors>
<transportConnector name="stomp" uri="stomp://localhost:61613"/>
</transportConnectors>
你之前遇到过类似的异常吗?
【问题讨论】:
-
鉴于您在此主题上的 other question,值得注意的是您的代码使用普通 TCP 套接字进行连接,而不是 WebSocket。
标签: java activemq stomp consumer