Quantcast
Channel: Apache Timeline
Viewing all articles
Browse latest Browse all 5648

Camel-Stomp Component Serialization Issue

$
0
0
I have an issue with the camel-stomp component. When I transport String
messages over the stomp component and receive the String back from the Stomp
broker it is prepended with "ascii: ". Shouldn't Strings be received in the
same state they were sent?

Here is a hand-written (and likely full of errors) approximation of the code
we use:

package com.SomeCompany.SomeProject;
public class SomeClass {
@Produce(uri="seda:msgChannel")
private ProducerTemplate messageChannel;

public void someMethod() {
String msg = "hi there"
messageChannel.sendBody(msg)

public void handleMessage(String message) {
System.out.println(message)
// output: "ascii: hi there"

<beans>
<camelContext>
<route>
<from uri="seda:msgChannel?concurrentConsumers=1" />
<to uri="stomp:queue:stompMessage" />
</route>
<route>
<from uri="stomp:queue:stompMessage" />
<bean ref="someBean" method="handleMessage"/>
</route>
</camelContext>

<bean id="stomp"
class="org.apache.camel.component.stomp.StompComponent">
<property name="brokerURL" value="tcp://localhost:61613"/>
<property name="passcode" value="guest" />
<property name="login" value="guest" />
</bean>

<bean id="someBean" class="com.SomeCompany.SomeProject.SomeClass" />
</beans>

Digging a little deeper, when I modify the above to send Serializable
objects, I receive back org.fusesource.hawtbuf.Buffer objects instead of an
instance of the original class. For example if I sent an Animal object, I
get back a Buffer object whose toString method returns the toString of that
animal with "ascii: " prepended:

public class Animal implements Serializable {
public String toString() {
return "moo";

public class someOtherClass {
public void handleMessage(Buffer buffer) {
System.out.println(buffer)
// output: "ascii: moo"

If I send an object through the stomp-component, shouldn't I receive the
same object back on the other end?

Is there something I'm missing? I'm new to Camel so I'm likely doing
something wrong.

I'm using:
camel-stomp 2.12.2
Spring Framework 4.0 Release
RabbitMQ 3.2.2 with Stomp plugin as the Stomp Broker
JDK 1.7

Viewing all articles
Browse latest Browse all 5648

Trending Articles