Weblogic JMS

这篇博客介绍了如何在WebLogic 12C中配置和使用Java Messaging Service (JMS),包括创建持久存储、设置JMS服务器、配置JNDI以及实现队列和Topic的发送与接收。详细步骤指导了如何通过WebLogic Console创建FileStore、JMS Server,并在JMS模块中配置连接工厂、队列和Topic。
摘要由CSDN通过智能技术生成

简介

全称:WebLogic Server的Java Messaging Service(JMS)
WebLogic JMS 是与 WebLogic Server 平台紧密集成的企业级消息传递系统。
Java Message Service (JMS) API 是一种消息传递标准,允许基于 Java Platform Enterprise Edition (Java EE) 的应用程序组件创建、发送、接收和读取消息。它实现了松散耦合、可靠和异步的分布式通信。

JMS 的具体功能包括

  • 可在共享消息系统的 Java 应用程序之间交换消息
  • 用于创建、发送和接收消息的标准接口便于应用程序开发

JMS 支持两种消息传递模式:点对点 (PTP) 和发布/订阅。
WebLogic JMS 服务器架构的关键组件包括

  • 可托管一组预定义模块及其相关持久存储(位于 WebLogic Server 实例中)的 JMS 服务器。
  • 配置资源(查询、主题、连接工厂等),包括根据 http://xmlns.oracle.com/weblogic/weblogic-jms/1.4/weblogic-jms.xsd架构XML文档定义的JMS模块。
  • 客户端 JMS 应用程序。 向目的地生成消息或从目的地消费消息。
  • Java 命名和目录接口 (JNDI),提供资源查找功能。 JNDI 名称用于 JMS 资源(如连接工厂和目的地)的配置。
    这些资源的运行时实现使用特定名称绑定到 JNDI。
  • WebLogic 持久存储(文件存储或支持 JDBC 的数据库)用于存储持久消息数据。

后文介绍如何配置JMS以及使用对应API实现送收信息。

创建持久存储

WebLogic Console ->Services->Persistent Stores,中新建FileStore
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

创建JMS server

webLogic Console->Servcies->Messaging->JMS Servers新建JMS Server
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

配置消息通信JNDI

Servcies->Messaging->JMS Modules中新建JMS 模块
在这里插入图片描述
在这里插入图片描述
配置文件具体保存位置参考如下
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
进入新追加的JMS模块,在Subdeployments 中新建Subdeployment
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述进入新追加的jms_test_module2的Configuration中,新建资源。
在这里插入图片描述
资源类型选择连接工厂
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
继续新建资源,这次选择队列
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
继续新建资源,这次选择Topic
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

送收信代码实装

队列送信

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Hashtable;

import javax.jms.*;
import javax.naming.*;

public class QueueMsgSender {
   

    private final static String JNDI_FACTORY = "weblogic.jndi.WLInitialContextFactory";
    private final static String PROVIDER_URL = "t3://192.168.56.106:7001";
    private final static String JMS_FACTORY = "jms/jms_test_connection_factory1";
    private final static String JNDI_QUEQUE = "jms/jms_test_queue";

    private QueueConnectionFactory connectionFactory;
    private QueueConnection queueCon;
    private QueueSession qSession;
    private Queue queue;
    private QueueSender sender;
    private ObjectMessage objectMessage;

    public void init(Context ctx, String queueName)
      throws NamingException, JMSException {
   
        connectionFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY);
        queueCon = connectionFactory.createQueueConnection();
        //false: 将会话标记为非事务性的.非事务性的会话会立即发送消息。
        //Session.AUTO_ACKNOWLEDGE: 表示当客户端成功的从receive方法返回后,或者是在消息监听器成功返回后,会话会自动确认消息的接收
        qSession = queueCon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
        //通过JNDI查找送信目标队列
        queue = (Queue)ctx.lookup(queueName);
         //使用会话和目标(队列)创建消息生产者(队列发送者)的引用
        sender = qSession.createSender(queue);

         //开始连接
        queueCon.start();
    }

    public void sendMsg(String msg) throws JMSException {
   
        User user = new User();
        user.setName(msg);
        user.setAge(18);
        objectMessage = qSession.createObjectMessage();
        objectMessage.setObject(user);
        sender.send(objectMessage);
    }

    public void readAndSend() throws IOException, JMSException {
   
        BufferedReader msgStream = new BufferedReader(new InputStreamReader(System.in));
        boolean quitNow = false;
        do {
   
            System.out.print("Enter message (\"quit\" to quit): \n");
            String line = msgStream.readLine();
            if (line != null && line.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值