JMS五种消息的发送/接收的例子
来源:互联网 发布:mac怎么关闭加密文件夹 编辑:程序博客网 时间:2024/06/04 19:12
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();
//连接工厂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();
- }
- }
- }
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();}}}
0 0
- JMS五种消息的发送/接收的例子
- JMS五种消息的发送/接收的例子
- JMS五种消息的发送/接收的例子
- JMS五种消息的发送/接收的例子
- JMS P2P方式的消息发送/接收的一个简单例子
- 实验五 消息的发送与接收
- 实验五 消息的发送与接收
- java 实现jms的客户端(发送接收消息)
- java 实现jms的客户端(发送接收消息)
- Spring+JMS实现消息的发送与接收
- spring的jms:用spring的JmsTemplate发送和接收消息
- spring的jms:用spring的JmsTemplate发送和接收消息 .
- spring的jms:用spring的JmsTemplate发送和接收消息
- jms中消息接收的实现原理
- 使用JMS发送和接收text和Object类型的消息
- python实现jms客户端(发送接收消息)
- Sping JMS使用消息转换器发送或接收消息
- Spring JMS 异常消息接收&发送Pub/Sub域消息
- 解决Android解析图片的OOM问题!!!
- POJ 3498 March of the Penguins
- 乘积能被10整除的概率
- 记一下jar class path 需要注意的问题
- 恶搞突然有人同一天饿一天
- JMS五种消息的发送/接收的例子
- PHP如何解决网站大流量与高并发的问题
- 反光镜反光镜的房间付定金打飞机
- 淘宝技术这十年
- HibernateTemplate中的HibernateCallBack事务
- 文献管理软件简介
- 我今天很开心吖
- Android4.0使用dom解析
- 今天木有下雨吗