设为首页 收藏本站
查看: 904|回复: 0

[经验分享] weblogic+jms的简单使用

[复制链接]

尚未签到

发表于 2017-2-15 10:00:51 | 显示全部楼层 |阅读模式
  
Java消息服务(JMS)是用于编写使用异步消息传递的JEE应用程序的API。JMS的创建过程类似于Hibernate的工厂模式。JMS支持两种消息类型:点对点(PTP)和发布/订阅式(pub/sub)。PTP消息被生产者放入到一个队列中,消费者则从消息队列中取走消息。消息一旦被一个消息者取走,消息就从队列中移除,这意味着即使有多个消费者观察一个队列,但一条消息只能被一个消费者取走。PUB/SUB消息则需要先注册,然后消息异步发送到订阅者,可以有多个订阅者。

  
  实现所包括的步骤:


  • 创建JNDI初始上下文(context)。
  • 从JNDI上下文获取一个队列连接工厂。
  • 从队列连接工厂中获取一个Quene。
  • 创建一个Session对象。
  • 创建一个发送者(sender)或接收者(receiver)对象。
  • 使用步骤5创建的发送者或接收者对象发送或接收消息。
  • 处理完消息后,关闭所有JMS资源。
  安装完成Weblogic9.2后,启动服务进入控制台, 点击JMS Modules——>examples-jms
  修改JNDI名称为myqueue,mytopic这样在之后的初始化过程中,我们就可以通过名称查找创建连接工厂
  服务端代码如下:
   

package www.lring.net;
import java.util.Hashtable;
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.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
public class Test {
public static void main(String[] args){
try{
// TODO Auto-generated method stub
Hashtable<String,String> table = new Hashtable<String,String>();
table.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
table.put(Context.PROVIDER_URL, "t3://localhost:7001");
Context cxt = new InitialContext(table);
//获得可以进行点对点操作的消息连接工厂,连接工厂一定要先设置好
QueueConnectionFactory factory = (QueueConnectionFactory)
cxt.lookup("weblogic.examples.jms.QueueConnectionFactory");
//获得连接,获得了可以使用消息服务的权利
QueueConnection conn = factory.createQueueConnection();
//获得一个队列对象
Queue q = (Queue) cxt.lookup("myqueue");//从连接工厂中获得一个连接,用这个连接去连接要暂存消息的队列
//获得一次消息发送的会话对象
QueueSession session = conn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
//建立消息的发送对象
QueueSender sender = session.createSender(q);
//我要发送的消息内容封装到一个message的实现者中。
TextMessage message = (TextMessage) session.createTextMessage();
//写入消息
message.setText("邢海峰hello world......");
//发送消息
sender.send(message);
sender.close();
session.close();
conn.close();
cxt.close();
//TopicConnectionFactory topicfactory = (TopicConnectionFactory) cxt.lookup("weblogic.examples.jms.TopicConnectionFactory");
}catch(Exception e ){
e.printStackTrace() ;
}
}
}

  客户端代码如下:

package www.lring.net;
import java.util.Hashtable;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueReceiver;
import javax.jms.QueueSession;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
public class GetMessage {
public GetMessage() {
// TODO Auto-generated constructor stub
}
/**
* @param args
*/
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
Hashtable<String,String> table = new Hashtable<String,String>();
table.put(Context.INITIAL_CONTEXT_FACTORY, weblogic.jndi.WLInitialContextFactory.class.getName());
table.put(Context.PROVIDER_URL, "t3://localhost:7001");
Context context = new InitialContext(table);
QueueConnectionFactory factory = (QueueConnectionFactory)
context.lookup("weblogic.examples.jms.QueueConnectionFactory");
Queue q = (Queue) context.lookup("myqueue");
QueueConnection conn = factory.createQueueConnection();
//session.setMessageListener(arg0);
//消息的提取本身是异步的
QueueSession session = conn.createQueueSession(false, 0);
//获得一个消息的接受者
//获得消息,消费消息
conn.start();
QueueReceiver receiver = session.createReceiver(q);
//receiver.setMessageListener(new MyLinener());
//while(true)
//{
//Thread.sleep(1000);
//System.out.println("..............");
//}
TextMessage message = (TextMessage) receiver.receive();
System.out.println(message.getText());
conn.close();
}
}

  

   


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-342389-1-1.html 上篇帖子: WebLogic部署数据源 下篇帖子: 在WebLogic中使用Hibernate
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表