我用ptp的形式实现,数据发送的时候效率蛮快的,达到每秒上万条数据,但在数据接收的时候出现了问题,只能达到每秒四十条的数据, consumer.setMessageListener(new MessageListener(){
public void onMessage(Message msg){
TextMessage text = (TextMessage) msg;
try {
System.out.println(text.getText()+"..恩,我收到了");
Destination replyTo = msg.getJMSReplyTo();
if(replyTo != null){
Message replyMessage = session.createTextMessage(text.getText()+"的消息已被接受");
String correlationID = msg.getJMSMessageID();
replyMessage.setJMSCorrelationID(correlationID);
MessageProducer producer = session.createProducer(replyTo);
producer.send(replyMessage);
}
session.commit();//在事务提交的时候,表示数据签收了,不签收表示数据还会存在
} catch (JMSException e) {
e.printStackTrace();
}
}
});仔细研究了下,这主要是session.commit的原因,他每接受一次都要提交一次,所以导致速率下降,我把它去掉了,速度是达到了要求,可他没有对队列里的信息进行确认,导致他队列里的信息以为没有被接受,所以下次接受的时候还能在接受一遍,求大神赐教该怎么解决速度的问题,并能让消息同时确认了
public void onMessage(Message msg){
TextMessage text = (TextMessage) msg;
try {
System.out.println(text.getText()+"..恩,我收到了");
Destination replyTo = msg.getJMSReplyTo();
if(replyTo != null){
Message replyMessage = session.createTextMessage(text.getText()+"的消息已被接受");
String correlationID = msg.getJMSMessageID();
replyMessage.setJMSCorrelationID(correlationID);
MessageProducer producer = session.createProducer(replyTo);
producer.send(replyMessage);
}
session.commit();//在事务提交的时候,表示数据签收了,不签收表示数据还会存在
} catch (JMSException e) {
e.printStackTrace();
}
}
});仔细研究了下,这主要是session.commit的原因,他每接受一次都要提交一次,所以导致速率下降,我把它去掉了,速度是达到了要求,可他没有对队列里的信息进行确认,导致他队列里的信息以为没有被接受,所以下次接受的时候还能在接受一遍,求大神赐教该怎么解决速度的问题,并能让消息同时确认了
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货