1.19.JDeveloper开发JMS-记录日志功能(一)

JDeveloper开发JMS-记录日志功能(一)

前言

目前为此我们已实现JMS消息的服务方设置1.17.Weblogic创建JMS服务+客户端调用1.18.JDeveloper中开发JMS客户端,但目前为止只实现的消息的发送与接受,如果想实现更复杂的JMS功能,如在JMS收到消息时,向数据库写入日志,并返回状态等,这就需要使用EJB来实现JMS客户端监听,实时的接收到消息后进行功能处理,我们接下来讲解如何使用JMS实现日志记录。

消息驱动Bean(Message Driven Bean)

定义:消息驱动是专门用来处理基于消息请求的组件(包括JMS,MQ等)。

消息模型:点对点消息传递和发布/订阅消息传递

点对点消息传递模型:一条信息只能传递给一个队列接收方

发布/订阅消息传递:一条消息可以由多个接收者接收

详细解析:首先它是无状态的Session Bean,客户端调用MDB时,无需等待,可以立即返回,MDB会异步处理客户的请求;MDB必须实现MessageListener接口,当容器守候检测到一条队列信息时,将调用onMessage()方法。

适用范围:当一个业务执行很长,然后又无需将结果实时反馈客户时,适合使用MDB;如订单成功后向客户发送一条成功短信或者一封邮件。

1、新建工程

新建Message-Driven Bean项目,为命名为:CFESBLog

image-20210604135735552

image-20210604135753685

2、新建MDB

新建EJB,为命名为:MessageDrivenEJBBean

 

3、修改EJB代码

package cfesblog;

import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

@MessageDriven(mappedName = "MonQueue")
public class MessageDrivenEJBBean implements MessageListener {
    @Override
    public void onMessage(Message arg0) {
            // TODO Auto-generated method stub
            TextMessage textMessage=(TextMessage)arg0;
            try {
                    System.out.print("--------------TextMessage="+textMessage.getText());
                //收到消息并处理,比如由xml转为json,或xml转为对象,向数据库写入日志等
            } catch (JMSException e) {
                    // TODO Auto-generated catch block
                    System.out.print("--------------error:"+e.getMessage());
                    e.printStackTrace();
            }
    }
}
Copy

效果如图:

image-20210604140139061

对应weblogic中的JMS设置如下:

 

4、打包EJB

选择打包为jar文件

 

image-20210604141437609

如果你是本时开发环境的weblogic,可以跳过第5步,在jdeveloper中直接部署到本地weblogic中,如下图

 

5、部署EJB

上传jar文件到服务器

进入域->部署 进行EJB部署

 

image-20210604141651957

 

下一步使用默认即可,最后安装完成后效果如下图:

 

6、测试

向准备好的JMS里写入消息,可参考1.18.JDeveloper中开发JMS客户端 中的消息发送,注意,由于1.18中的连接名为"jms/jms_test_connection_factory1",使用OSB连接时地址会出错,所以这里我们把连接工厂和queue名称修改了,正确的连接参数为:jms://127.0.0.1:7101/MonCF/MonQueue

image-20210604142524510

7、后续优化思路

​ 目前为止,EJB已能监听到发送的消息,下一步我们准备只要OSB管道中进行了服务接入,就异步向JMS放入过程的数据(包括出错时错误日志):如请求系统 ,服务系统 ,请求报文,返回报文,请求时间,返回时间等,当EJB接收到消息后,把该过程数据记录进数据与elasticsearch,实现OSB服务过程日志记录功能。

请参与:1.20.JDeveloper开发JMS-记录日志功能(二)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值