JMS五种消息的发送/接收的例子
2012-04-20 16:31
162 查看
文章来自:/article/3866279.html
1、消息发送
2、消息接收:通过消息监听器的方式接收消息
1、消息发送
//连接工厂 ConnectionFactory connFactory = new ActiveMQConnectionFactory( ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616"); //连接到JMS提供者 Connection conn = connFactory.createConnection(); conn.start(); //事务性会话,自动确认消息 Session session = conn.createSession(true, Session.AUTO_ACKNOWLEDGE); //消息的目的地 Destination destination = session.createQueue("queue.hello"); //消息生产者 MessageProducer producer = session.createProducer(destination); producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); //不持久化 //文本消息 TextMessage textMessage = session.createTextMessage("文本消息"); producer.send(textMessage); //键值对消息 MapMessage mapMessage = session.createMapMessage(); mapMessage.setLong("age", new Long(32)); mapMessage.setDouble("sarray", new Double(5867.15)); mapMessage.setString("username", "键值对消息"); producer.send(mapMessage); //流消息 StreamMessage streamMessage = session.createStreamMessage(); streamMessage.writeString("streamMessage流消息"); streamMessage.writeLong(55); producer.send(streamMessage); //字节消息 String s = "BytesMessage字节消息"; BytesMessage bytesMessage = session.createBytesMessage(); bytesMessage.writeBytes(s.getBytes()); producer.send(bytesMessage); //对象消息 User user = new User("cjm", "对象消息"); //User对象必须实现Serializable接口 ObjectMessage objectMessage = session.createObjectMessage(); objectMessage.setObject(user); producer.send(objectMessage); session.commit(); //在事务性会话中,只有commit之后,消息才会真正到达目的地 producer.close(); session.close(); conn.close();
2、消息接收:通过消息监听器的方式接收消息
public class Receiver implements MessageListener{ private boolean stop = false; public void execute() throws Exception { //连接工厂 ConnectionFactory connFactory = new ActiveMQConnectionFactory( ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616"); //连接到JMS提供者 Connection conn = connFactory.createConnection(); conn.start(); //事务性会话,自动确认消息 Session session = conn.createSession(true, Session.AUTO_ACKNOWLEDGE); //消息的来源地 Destination destination = session.createQueue("queue.hello"); //消息消费者 MessageConsumer consumer = session.createConsumer(destination); consumer.setMessageListener(this); //等待接收消息 while(!stop){ Thread.sleep(5000); } session.commit(); consumer.close(); session.close(); conn.close(); } public void onMessage(Message m) { try{ if(m instanceof TextMessage){ //接收文本消息 TextMessage message = (TextMessage)m; System.out.println(message.getText()); }else if(m instanceof MapMessage){ //接收键值对消息 MapMessage message = (MapMessage)m; System.out.println(message.getLong("age")); System.out.println(message.getDouble("sarray")); System.out.println(message.getString("username")); }else if(m instanceof StreamMessage){ //接收流消息 StreamMessage message = (StreamMessage)m; System.out.println(message.readString()); System.out.println(message.readLong()); }else if(m instanceof BytesMessage){ //接收字节消息 byte[] b = new byte[1024]; int len = -1; BytesMessage message = (BytesMessage)m; while((len=message.readBytes(b))!=-1){ System.out.println(new String(b, 0, len)); } }else if(m instanceof ObjectMessage){ //接收对象消息 ObjectMessage message = (ObjectMessage)m; User user = (User)message.getObject(); System.out.println(user.getUsername() + " _ " + user.getPassword()); }else{ System.out.println(m); } stop = true; }catch(JMSException e){ stop = true; e.printStackTrace(); } } }
相关文章推荐
- JMS五种消息的发送/接收的例子
- JMS五种消息的发送/接收的例子
- JMS五种消息的发送/接收的例子
- JMS P2P方式的消息发送/接收的一个简单例子
- Spring+JMS实现消息的发送与接收
- spring的jms:用spring的JmsTemplate发送和接收消息 .
- 使用JMS发送和接收text和Object类型的消息
- spring-jms(activemq实现)使用queue发送消息简单例子
- Linux系统下UDP发送和接收广播消息小例子
- JMS(十二):ActiviteMQ接收和发送消息基本流程
- java 实现jms的客户端(发送接收消息)
- 39、ActiveMQ JMSDEMO1 一对多发送接收消息
- jms+spring+activemq配置(发送和接收消息)
- Linux系统下UDP发送和接收广播消息小例子
- Spring JMS 异常消息接收&发送Pub/Sub域消息
- WebSphereMq使用JMS发送消息和接收消息
- jms+spring+activemq配置(发送和接收消息)
- Linux系统下UDP发送和接收广播消息小例子
- activemq使用JMS发送消息和接收消息
- spring的jms:用spring的JmsTemplate发送和接收消息