2016-03-20 8 views
2

I neueste Version von Camel und Netty mit Feder bin mit und unter Definition haben:Java Camel Netty TCP Verbraucher erhält nur 1024 Bytes

<bean id="transformIncoming" class="com.hugin.camel.transform.IncomingMessageTransformer"/> 
<from uri="netty4:tcp://127.0.0.1:8888?allowDefaultCodec=false&amp;encoder=#byteArrayEncoder"/> 

<route> 
<transform> 
    <method ref="transformIncoming" method="process"></method> 
</transform> 

ich eine Klasse definierte TCP-Anfragen bearbeiten:

Mein Problem ist, dass unabhängig von der Größe der eingehenden Nachricht die Buf-Variable nie mehr als 1024 Bytes ist, so dass meine Anfrage abgeschnitten wird.

Entsprechend der Definition der Komponenten soll receiveBufferSize 65536 Bytes betragen. Wie kann ich große Anfragen bearbeiten?

+0

Was meinen Sie mit "Nachricht"? Verwenden Sie eine Art von Nachrichtenprotokoll? Wo denkst du ist der Code, um eine Nachricht zu erhalten? –

Antwort

-1

Die Eigenschaft receiveBufferSize wird nur in einem UDP-Consumer verwendet, um die Socketoption SO_RCVBUF zu konfigurieren. Es wird nicht in einem TCP-Endpunkt verwendet.

Sie sollten sich nicht auf camel verlassen, um Ihr Protokoll zu implementieren: Ohne einen geeigneten Decoder wird für jeden tcp-Rahmen eine Nachricht gesendet, und Sie können keine Garantie für die Rahmengröße geben.

Sie sollten Ihr Protokoll in Netty implementieren und Objekte generieren, die dann von Kamel behandelt werden. Netty verfügt über alle Werkzeuge, die Sie benötigen, um Ihr Protokoll über einen TCP-Stream neu zusammenzusetzen.