我使用ActiveMQ 5.9.0發送和接收JMS。 首先我在隊列中發送MapMessage消息:ActiveMQ MapMessage接收消息與空表
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
Connection connection = connectionFactory.createConnection();
connection.start();
Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue("my-queue");
MessageProducer producer = session.createProducer(destination);
MapMessage message = session.createMapMessage();
message.setDouble(key, value);
producer.send(message);
session.commit();
session.close();
connection.close();
System.out.println(message);
什麼它打印出是:
ActiveMQMapMessage {commandId = 0,responseRequired =假,MESSAGEID = ID:LT006632-52708-1382520875674-11: 1:1:1:1,originalDestination = null,originalTransactionId = null,producerId = null,destination = queue:// my-queue,transactionId = TX:ID:LT006632-52708-1382520875674-11:1:1,expiration = 0,timestamp = 1382520891291,arrival = 0,brokerInTime = 0,brokerOutTime = 0,correlationId = null,replyTo = null,persistent = true,type = null,priority = 4,groupID = null,groupSequence = 0,targetConsumerId = null,compressed = false,userID = null,content = [email protected],marshalledProperties = null,dataStructure = null,redeliveryCounter = 0,size = 0,properties = null,readOnlyProperties = false,readOnlyBody =假,可投放=假,jmsXGroupFirstForConsumer = FALSE} ActiveMQMapMessage {theTable = {條目6 = 922.0}}
具有正確theTable在消息。
它接收消息中另一個項目以這種方式:
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
Connection connection = connectionFactory.createConnection();
connection.start();
final Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue("my-queue");
MessageConsumer consumer = session.createConsumer(destination);
consumer.setMessageListener(new MessageListener() {
public void onMessage(Message msg) {
MapMessage message = (MapMessage) msg;
// TODO something....
try {
System.out.println(message.getJMSType());
session.commit();
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
Thread.sleep(30000);
session.close();
connection.close();
但在接收消息它打印出:
ActiveMQMapMessage {commandId = 6,responseRequired =假,MESSAGEID = ID: LT006632-52708-1382520875674-11:1:1:1:1,originalDestination = null,originalTransactionId = null,producerId = ID:LT006632-52708-1382520875674-11:1:1:1,destination = queue:// my-隊列,transactionId = TX:ID:LT006632-52708-1382520875674-11:1:1,到期= 0,時間戳= 1382520891291,到達= 0,brokerIn time = 1382520891291,brokerOutTime = 1382520891298,correlationId = null,replyTo = null,persistent = true,type = null,priority = 4,groupID = null,groupSequence = 0,targetConsumerId = null,compressed = false,userID = null,content = [email protected],marshalledProperties = null,dataStructure = null,redeliveryCounter = 0,size = 0,properties = null,readOnlyProperties = true,readOnlyBody = true,droppable = false,jmsXGroupFirstForConsumer = false} ActiveMQMapMessage { theTable = {}}
使用空的theTable項目。 我想知道它是什麼原因以及如何解決這個問題。謝謝!
這工作!但它是如此奇怪...... – wceo
是的,奇怪的行爲。您可以在ActiveMQ JIRA上編寫更改請求:https://issues.apache.org/jira/browse/AMQ ;-) – Mayoares