JMS消息处理(五):PTP消息发送的步骤;实例

tech2023-10-17  87

2.PTP消息的发送

不管是使用PTP消息模型,还是使用Pub-Sub消息模型,消息生产者发送消息的步骤都是相似的,步骤如下: 1.通过JNDI查找来获取JMS连接工厂 2.JMS连接工厂创建JMS连接 3.JMS连接创建JMS消息会话 4.JMS会话创建消息生产者 5.JMS消息会话创建空的JMS消息 6.JMS消息调用自生方法填充内容 7.通过JNDI查找获取JMS消息目的 8.消息生产者将消息发送到指定的JMS消息目的 9.关闭JMS资源

eg:新建java项目JMSLession 1.导入jar包

webservices.jar wlclient.jar wljmsclient.jar

2.新建消息发送类MessageSender.java消息发送类

public class MessageSender { //3.测试 public static void main(String[] args) { // TODO Auto-generated method stub try { MessageSender ms = new MessageSender(); ms.sendMessage(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } //2.发送消息:向weblogic服务器发送消息 public void sendMessage() throws Exception { //定义WebLogic默认的连接工厂的JNDI final String CONNECTION_FACTORY_JNDI = "weblogic.jms.ConnectionFactory"; //获取JNDI服务的context对象 Context ctx = getInitialContext(); //1.通过JNDI查找获取连接工厂对象 ConnectionFactory connFactory = (ConnectionFactory) ctx.lookup(CONNECTION_FACTORY_JNDI); //7.通过JNDI查找获取消息目的(配置的资源名称MessageQueue) Destination dest = (Destination) ctx.lookup("MessageQueue"); //2.通过连接工厂创建一个连接对象(创建真正的连接对象) Connection conn = connFactory.createConnection(); //3.利用jms连接创建jms会话 1.false 非事务性会话(没有提交过程) AUTO_ACKNOWLEDGE 自动确认模式 一旦确认消息就会确认消息接收 Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); //4.利用JMS会话创建消息的生产者 dest消息目的(8.消息生产者产生的消息给消息队列/目的) MessageProducer sender = session.createProducer(dest); //5.设置消息生产者生产出来的消息的传递模式 有效时间 PERSISTENT 持久 sender.setDeliveryMode(DeliveryMode.PERSISTENT); sender.setTimeToLive(20000); //5.通过JMS会话创建一个空的消息文本 TextMessage msg = session.createTextMessage(); //6.设置向消息队列发送的数据 msg.setText("HELLOWORLD"); //发送消息(正式发送) sender.send(msg); msg.setText("WELCOME TO JMS"); sender.send(msg); session.close(); //9.关闭JMS连接 conn.close(); } //1.用来获取命名服务的Context对象 获取服务容器对象 private Context getInitialContext() throws Exception { //定义初始化工厂 final String INIT_FACTORY = "weblogic.jndi.WLInitialContextFactory"; //定义服务器地址,t3协议等同http协议,weblogic提供的固有的。 final String SERVER_URL = "t3://localhost:7001"; Context ctx = null; //容器的初始化过程 //属性对象Properties:存放一个键值对的组合,类似HasMap Properties props = new Properties(); //通过属性对象来封装创建容器对象的工厂命名和weblogic服务器的URL props.put(Context.PROVIDER_URL, SERVER_URL); props.put(Context.INITIAL_CONTEXT_FACTORY, INIT_FACTORY); ctx = new InitialContext(props); return ctx; } }

可以在WebLogic的JMS模块里的资源概要的监视里看到发送消息的条数

最新回复(0)