我想读取TCP端口上的值,并将它们推送到队列中。这样,当消费者有空时,他们就可以从另一端消费。
我正在尝试使用ActiveMQ进行同样的操作。我保留了默认的activemq.xml:
<transportConnectors>
<!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
</transportConnectors>
如何使用ActiveMQ将数据从TCP端口推送到队列?
当我运行代码在TCP套接字上连接时,我得到:
jvm 1 | WARN | Transport Connection to: tcp://127.0.0.1:50473 failed: java.i
o.IOException: Unknown data type: 47
我运行的代码如下:
public static void main(String argv[]) throws Exception
{
try
{
Socket client = new Socket("localhost", 61616);
OutputStream outToServer = client.getOutputStream();
DataOutputStream out = new DataOutputStream(outToServer);
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
Date todayDate = new Date();
out.writeUTF(dateFormat.format(todayDate)+" Content gets received in server"+"n");
client.close();
}catch(IOException e)
{
e.printStackTrace();
}
}
您正试图将原始数据写入一个套接字,该套接字将使用ActiveMQ中的默认OpenWire协议接收二进制数据。您需要使用真正的客户端,例如ActiveMQ本地java客户端,或者C++、.NET.中的客户端
您可以使用STOMP传输连接器来提供一种机制来编写基于原始文本的命令,但您仍然需要遵守STOMP协议的语义。
我建议您阅读更多关于JMS代理在一般情况下是如何工作的。