JMS的p2p消息发送与接受_Tomcat, WebLogic及J2EE讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Tomcat, WebLogic及J2EE讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2765 | 回复: 0   主题: JMS的p2p消息发送与接受        下一篇 
nengqiang.wang
注册用户
等级:中校
经验:1658
发帖:34
精华:0
注册:1970-1-1
状态:离线
发送短消息息给nengqiang.wang 加好友    发送短消息息给nengqiang.wang 发消息
发表于: IP:您无权察看 2015-8-14 10:40:32 | [全部帖] [楼主帖] 楼主

1 在Weblogic中配置JMS服务

  由于weblogic‘图形界面配置jms过程比较简单,下面值给出配置的简要过程和结果。

(1)新建jms连接工厂,工厂名称为“ ConnectionFactory”, JNDI name为"jmsfactory" 。

(2)定义后备存储, 并填写存储目录.

(3)新建jms服务器,服务器名称为:“ jmsserver ”。

(4)在“ myJMSServer ”服务下新建目标为“ queue ”队列, JNDI name为"jmstest"。

2 在Eclipse中编写消息发送端的代码,工程目录如下:

北京联动北方科技有限公司

如果jdk中没有jms相关jar包,请一定记得导入javax.jms.jar和weblogic.jar包

发送消息端的代码如下:

package com.wnq.send;
import java.util.Properties;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class JmsSend {
      public static void main(String[] args) throws NamingException, JMSException {
            String url = "t3://127.0.0.1:7001";
            Properties properties = new Properties();
            properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
            properties.put(Context.PROVIDER_URL, url);
            Context context = new InitialContext(properties);
            // 获得JMS信息连接队列工厂
            QueueConnectionFactory connFactory = (QueueConnectionFactory) context.lookup("jmsfactory");
            // 获得JMS信息连接队列
            QueueConnection queConn = connFactory.createQueueConnection();
            // 产生队列session,设置事物模式为false,自动应答消息接收
            QueueSession queSession = queConn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
            // 获得队列
            javax.jms.Queue queue = (javax.jms.Queue) context.lookup("jmstest");
            // 产生JMS队列发送器
            QueueSender queSender = queSession.createSender(queue);
            // 产生JMS消息
            Message msg = queSession.createTextMessage("Hello,我是来自客户端JmsSender的消息!");
            System.out.print("发送的消息为:" + msg.toString());
            // 发送数据到JMS
            queSender.send(msg);
            System.out.println("发送成功");
            // 关闭操作
            queSender.close();
            queSession.close();
            queConn.close();
      }
}


3 发送消息

运行所建工程其中eclipse控制台结果为:

北京联动北方科技有限公司

weblogic管理台结果:

北京联动北方科技有限公司

消息总数不为1,是因为之前做测试,发送了一些消息。

4  Eclipse中编写消息接受端代码

工程目录结构为:北京联动北方科技有限公司

接受消息代码:

package com.wnq.receive;
import java.util.Properties;
import javax.jms.JMSException;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueReceiver;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class JmsReceive {
      public static void main(String[] args) throws NamingException, JMSException {
            String url = "t3://127.0.0.1:7001";
            Properties properties = new Properties();
            properties.put(Context.INITIAL_CONTEXT_FACTORY,
            "weblogic.jndi.WLInitialContextFactory");
            properties.put(Context.PROVIDER_URL, url);
            Context context = new InitialContext(properties);
            //获得JMS信息连接队列工厂
            QueueConnectionFactory connFactory = (QueueConnectionFactory) context.lookup("jmsfactory");
            //获得JMS信息连接队列
            QueueConnection queConn = connFactory.createQueueConnection();
            //产生队列session,设置事物模式为false,自动应答消息接收
            QueueSession queSession = queConn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
            queConn.start();
            //获得队列
            Queue queue = (Queue) context.lookup("jmstest");
            QueueReceiver queReceiver = queSession.createReceiver(queue);
            System.out.println("***************");
            queReceiver = queSession.createReceiver(queue);
            TextMessage msg = (TextMessage) queReceiver.receive();
            System.out.println("JmsReceive收到的消息是:" + msg.getText());
      }
}


5 接受消息

运行接受端代码Eclipse中结果为:

北京联动北方科技有限公司

weblogic管理台的结果为:

北京联动北方科技有限公司

由于之前做过一些发送和接受的操作,所以消息总数与最大使用者可能不匹配。

6 p2p消息

  这种消息队列可以同时有多个发送者,每个发送着都可以自由的向队列中发送消息,被发送的消息按照先发先进的原则一次排列在队列中,先发的消息排列在队列的前面,排列在队列中的消息可以立即被使用者使用,也可以等一段时间才被使用者使用!通常有队列服务器维持消息的持久化。默认情况按照在队列中次序一次使用,一旦一个消息被使用,该消息就会被从队列中删除,此后下一个消息才会被使用



人们都向往和寻找快乐,其实快乐就是一种心情,秘密隐藏于人的心中。快乐从不曾远离我们,而是我们远离了快乐。原本单纯的心,一旦复杂起来,快乐和幸福就 会远离而去,烦恼和忧愁就会随之而来。






赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论