TCP上的ActiveMQ给出未知数据类型:47

时间:2014-10-20 11:03:03

标签: java sockets tcp activemq

我想读取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&amp;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();
              }
    }

1 个答案:

答案 0 :(得分:1)

您正在尝试将原始数据写入期望使用ActiveMQ中默认的OpenWire协议接收二进制数据的套接字。您需要使用真正的客户端,例如ActiveMQ本机Java客户端,或者使用C ++,.NET中的客户端。

您可以使用STOMP传输连接器提供编写基于原始文本的命令的机制,但您仍需要遵守STOMP协议的语义。

我建议你再详细阅读一下JMS Brokers的工作方式。