Vin*_*ran 5 java activemq-classic
我是 Apache ActiveMQ 的新手。从 Producer 我发送以下内容:
{"senderPhNumber":"9986085716","sendingTime":"2015-07-20T22:11:24","spCode":"000001","customerName":"Vinod"}
Run Code Online (Sandbox Code Playgroud)
来自生产者的代码
String text = messageStr;
TextMessage message = session.createTextMessage(text);
// Tell the producer to send the message
System.out.println("Sent message: " + text );
producer.send(message);
Run Code Online (Sandbox Code Playgroud)
来自 Consumer 的消息类型为ActiveMqMessage。消费者实现MessageListener和内部onMessage()我有以下代码:
public void onMessage(Message msg) {
if (msg instanceof ActiveMQMessage){
System.out.println("Inside If");
try {
ActiveMQMessage aMsg = (ActiveMQMessage)msg;
System.out.println( " Inside Listener ..." + aMsg);
ProducerInfo prod = (ProducerInfo) aMsg.getDataStructure();
consumer.close();
session.close();
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我打印消息,它会打印如下
收到:ActiveMQMessage {commandId = 0, responseRequired = false, messageId = ID:AtulGupta-PC-50395-1437403689355-1:1:0:0:13, originalDestination = null, originalTransactionId = null, producerId = ID:AtulGupta-PC- 50395-1437403689355-1:1:0:0,目的地=topic://ActiveMQ.Advisory.MessageDelivered.Topic.atul,transactionId=null,过期=0,时间戳=0,到达=0,brokerInTime=1437403796470,brokerOutTime= 1437403796470,correlationId = null,replyTo = null,persistent = false,type = Advisory,priority = 0,groupID = null,groupSequence = 0,targetConsumerId = null,compressed = false,userID = null,content = null,marshalledProperties = org。 apache.activemq.util.ByteSequence@46347456,dataStructure = ActiveMQTextMessage {commandId = 5,responseRequired = false,messageId = ID:AtulGupta-PC-50417-1437403787762-3:1:1:1:1, originalDestination = null, originalTransactionId = null, producerId = ID:AtulGupta-PC-50417-1437403787762-3:1:1:1, destination = topic: //atul,transactionId = null,expiration = 0,timestamp = 1437403796468,arrival = 0,brokerInTime = 1437403796470,brokerOutTime = 0,correlationId = null,replyTo = null,persistent = false,type = null,priority = 4,groupID = null、groupSequence = 0、targetConsumerId = null、compressed = false、userID = null、content = null、marshalledProperties = null、dataStructure = null、redeliveryCounter = 0、size = 0、properties = null、readOnlyProperties = false、readOnlyBody = false、 droppable = false, jmsXGroupFirstForConsumer = false, text = null}, redeliveryCounter = 0, size = 0, properties = {originBrokerId=ID:AtulGupta-PC-50395-1437403689355-0:1,orignalDestination=ID:AtulGupta-PC-50417-1437403787762-3:1:1:1:1, originBrokerName=localhost, orignalMessageId=ID:AtulGupta-PC-50417-1437403787762-3:1,Bro1:1:1:1 tcp://AtulGupta-PC:61616}, readOnlyProperties = true, readOnlyBody = true, droppable = false, jmsXGroupFirstForConsumer = false}
如何检索实际的消息内容?
我知道这已经过时了,但这就是我所做的(基本上)。关键是要强制转换为ActiveMQTextMessage- 不ActiveMQMessage。
@Override
public void onMessage(Message message) {
if (message instanceof ActiveMQTextMessage) {
ActiveMQTextMessage textMessage = (ActiveMQTextMessage) message;
try {
handleMessage(textMessage);
} catch (Exception e) {
LOG.error("ActiveMQTextMessage handling failed", e);
}
} else {
LOG.error("Message is not a text message " + message.toString());
}
}
public static void handleMessage(ActiveMQTextMessage message) throws JMSException {
try {
String json = message.getText();
DoSomethingWithJSON(json);
} catch (Exception e) {
System.out.println("Could not extract data to log from TextMessage");
throw e;
}
mongoClient.close();
}
Run Code Online (Sandbox Code Playgroud)
小智 1
您是否尝试过将消息转换为 TextMessage,然后使用 getText() API 获取消息。
您可以参考以下链接中的代码: http://activemq.apache.org/hello-world.html
| 归档时间: |
|
| 查看次数: |
7351 次 |
| 最近记录: |