相同的消息我試圖從產生一個蟒AMQP消息和消耗消耗產生AMQP消息從Java /彈簧相同的消息。使用python並且用java
這裏是我的製片代碼(蟒蛇):
import pika, sys, pickle
sys.path.append("trc/suivi/amqp")
from Person import Person
connection = pika.BlockingConnection()
channel = connection.channel()
me = Person("Juliano", 38)
pickled_me = pickle.dumps(me)
channel.basic_publish(exchange='',
routing_key="myqueue",
body=pickled_me,
properties=pika.BasicProperties(delivery_mode=1))
這裏是我的消費者代碼(JAVA):
ApplicationContext context = new GenericXmlApplicationContext("classpath:/applicationContext.xml");
AmqpTemplate template = context.getBean(AmqpTemplate.class);
Person me = (Person) template.receiveAndConvert("myqueue");
System.out.println("Me: " + me.getName() + ":" + me.getAge());
這裏是人的Java類:
package trc.suivi.amqp;
import java.io.Serializable;
public class Person implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
和相應的Python類:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
(位於TRC/suivi/AMQP目錄結構)
我得到類轉換異常。我敢肯定,這有做任何與包/模塊的名稱或一些序列化的問題......
編輯:我現在用JSON和我得到這個在Java的反序列化:
Exception in thread "main" org.springframework.amqp.support.converter.MessageConversionException: failed to convert Message content. Could not resolve
__TypeId__ in header
at org.springframework.amqp.support.converter.DefaultJavaTypeMapper.retrieveHeader(DefaultJavaTypeMapper.java:104)
at org.springframework.amqp.support.converter.DefaultJavaTypeMapper.toJavaType(DefaultJavaTypeMapper.java:53)
at org.springframework.amqp.support.converter.JsonMessageConverter.fromMessage(JsonMessageConverter.java:118)
at org.springframework.amqp.rabbit.core.RabbitTemplate.receiveAndConvert(RabbitTemplate.java:425)
at trc.suivi.amqp.Consumer.main(Consumer.java:12)
好點!我更新了我的問題。 (我其實在做相反的:serialiazing在Python和Java中反序列化)。我現在用JSON – balteo
但我得到上述錯誤。你能幫我嗎? – balteo