我有一個java的ActiveMQ生產者,它產生一個ObjectMessage實例的整數消息。Java生產者,蟒蛇消費者,ActiveMQ
在python方面,我使用stomp python監聽隊列。但是,我收到空郵件正文,雖然所有標題都收到正確。而且,如果我將消息類型更改爲java端的TextMessage,則在python-consumer端會得到正確的消息。
我也試圖與PyactiveMQ但具有相同的效果
任何建議,可以理解!
編輯:這是我寫的關於蟒蛇
public class App
{
Connection conn;
Session session;
MessageProducer producer;
public void registerPublisher(String queueName, String url) throws JMSException {
ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("system", "manager" ,url);
conn = cf.createConnection();
conn.start();
session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue(queueName);
producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
}
public void send(int c) {
for (int i=0; i<c; ++i) {
try {
TextMessage tm = session.createTextMessage(new Integer(i).toString());
// ObjectMessage tm = session.createObjectMessage();
producer.send(tm);
} catch (JMSException e) {
e.printStackTrace();
}
}
}
public static void main(String []arg) {
App app = new App();
try {
app.registerPublisher(arg[0], arg[1]);
System.out.println(app.session);
} catch (JMSException e) {
e.printStackTrace();
}
app.send(1000);
}
}
和Python踐踏監聽測試跺腳一個樣板的java製作的代碼和Python用戶代碼
import time
import sys
import logging
import stomp
from stomp import ConnectionListener
queuename = sys.argv[1]
logging.basicConfig(level=logging.DEBUG)
class MyListener(ConnectionListener):
def on_error(self, headers, message):
print 'received an error %s' % message
def onMessage(self, headers, message):
print headers
print str(message)
print type(message)
print 'received a message ...%s...' % message
conn = stomp.Connection([('localhost', 61613)])
conn.set_listener('', MyListener())
conn.start()
conn.connect()
conn.subscribe(destination='/queue/'+queuename, ack='auto')
while 1:
time.sleep(2)
給我們一些代碼片段,您在哪裏創建消息以及在哪裏閱讀消息。 – 2012-08-07 05:23:37