需要将一些方法提出来;异步去处理;准备用ActiveMq这个框架;但使用的时候无法将队列中的消息读取后清掉!附上Java代码:/**循环发送消息*@paramSession*@paramMessageProducer*@exc...
需要将一些方法提出来;异步去处理;准备用ActiveMq这个框架;但使用的时候无法将队列中的消息读取后清掉!附上Java代码:
/**循环发送消息
* @param Session
* @param MessageProducer
* @exception Exception*/
public static void senderMessage(Users object) throws Exception {
Connection connection = createConnection();// 建立一个消息池的连接
Session session = createSession(connection); // 建立会话
MessageProducer producer = createProducer(session); // 建立消息生产者
ObjectMessage message = session.createObjectMessage();
message.setObject(object);
producer.send(message);
session.commit();
session.close();
connection.close();
}
protected static Connection createConnection() throws JMSException, Exception {
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
Connection connection = connectionFactory.createConnection();
connection.start(); //开始消息传递
return connection;
}
/**建立一个会话
* @param Connection 消息池连接
* @return Session 会话
* @exception Exception*/
protected static Session createSession(Connection connection) throws Exception {
Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
return session;
}
/**
* 建立消息生产者
* @param Session 会话
* @return MessageProducer 消息生产者
* @exception JMSException
*/
protected static MessageProducer createProducer(Session session) throws JMSException {
Destination destination = session.createQueue("TOOL.DEFAULT");
MessageProducer messageProducer = session.createProducer(destination);
return messageProducer;
}
public static void main(String[] args) throws Exception{
Users user = new Users();
user.setName("jiagnxiaoliang5");
// user.setTime(new Date().toLocaleString());
try {
senderMessage(user);
} catch (Exception e) {
e.printStackTrace();
}
}
--------------以上是发送消息端
public static Users getMessages() throws Exception{
Connection connection = JmsReceiver.createConnection();//建立一个消息池连接
connection.start();
Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue("TOOL.DEFAULT");
MessageConsumer consumer = session.createConsumer(destination);
Message message = consumer.receive();
ObjectMessage msg = (ObjectMessage) message;
Object object = msg.getObject();
session.close();
connection.close();
return object==null?null:(Users)object;
}
try {
Users user = getMessages();
System.out.println(user);
if(user!=null){
System.out.println(user.getName());
// System.out.println(user.getTime());
}
以上是接收消息端;但每次接收的消息都是同一个;希望接收消息后;队列中的消息能够清掉!
急啊;急啊!有人用过的吗???
展开