bbossgroups jms组件框架

简介:  bbossgroups jms组件框架 bboss aop框架的jms组件提供针对jms规范的一组简单的操作接口,可一通过 JMSTemplate组件来实现JMS消息的接收和发送功能。 系统中提供了两个JMS Template实现: org.frameworkset.mq.JMSTemplate—提供所有的jms接收和发送接口,不带主题订阅功能接口 org.frameworkset.mq.JMSReceiveTemplate-提供所有的jms接收和发送接口,带主题订阅功能接口 下面是举一些简单的例子,说明这连个模板类的使用方法。

 bbossgroups jms组件框架

bboss aop框架的jms组件提供针对jms规范的一组简单的操作接口,可一通过 JMSTemplate组件来实现JMS消息的接收和发送功能。

系统中提供了两个JMS Template实现:
org.frameworkset.mq.JMSTemplate—提供所有的jms接收和发送接口,不带主题订阅功能接口
org.frameworkset.mq.JMSReceiveTemplate-提供所有的jms接收和发送接口,带主题订阅功能接口

下面是举一些简单的例子,说明这连个模板类的使用方法。
系统中可以方便地通过扩展连接工程管理抽象类
org.frameworkset.mq.JMSConnectionFactory来实现不同的jms服务提供商的jms服务器的支持。开发人员只需要实现JMSConnectionFactory的抽象方法:

   /**
     * 构建特定提供商的连接工厂
     *
     * @return
     */

public abstract ConnectionFactory buildConnectionFactory() throws Exception;

bboss aop框架中的jms组件提供了对apache activemq server的实现:
org.frameworkset.mq. AMQConnectionFactory

本章都是以apache activemq server为例来说明jms组件的基本接口。
由于篇幅问题,省略相关配置的介绍,感兴趣的朋友可以到以下地址下载详细的文档介绍:
http://sourceforge.net/projects/bboss/files/bbossgroups-1.0/bbossgroups%20document.zip/download
其中aop框架技术白皮书中有bboss jms组件的详细介绍,这里只列出一些测试用例。

测试用例
1.2.1   从连接池工厂中获取jms connection
下面的代码从连接池工厂中获取jms connection对象,先后获取两次验证连接池是否生效。
JMSConnectionFactory factory = (JMSConnectionFactory)BaseSPIManager.getBeanObject("test.amq.PooledConnectionFactory");

        try

        {

            Connection connection = factory.getConnection();

            connection.start();
            connection.close();
            connection = factory.getConnection();
            connection.start();    
connection.close();    
        }
        catch (JMSException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

 
1.2.2   从连接工厂中获取jms connection

从连接工厂中获取jms connection,每次都会创建新的jms connection
JMSConnectionFactory factory = (JMSConnectionFactory)BaseSPIManager.getBeanObject("test.amq.ConnectionFactory");
        try
        {
            Connection connection = factory.getConnection();
            connection.start();
            connection.close();
            connection = factory.getConnection();
            connection.start();          
        }
        catch (JMSException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
1.2.3   向队列atest中发送消息

JMSTemplate template = (JMSTemplate)BaseSPIManager.getBeanObject("test.jmstemplate");
        try
        {
            template.send("atest", "ahello");
        }
        catch (JMSException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        finally
        {
            template.stop();
        }
1.2.4   向队列atest发送持久化的消息

JMSTemplate template = (JMSTemplate)BaseSPIManager.getBeanObject("test.jmstemplate");
        try
        {
            template.send("atest", "phello",true);
        }
        catch (JMSException e)
        {
            e.printStackTrace();
        }
        finally
        {
            template.stop();
        }

 
1.2.5   向队列atest中发送持久化消息,指定优先级和过期时间
JMSTemplate template = (JMSTemplate)BaseSPIManager.getBeanObject("test.jmstemplate");
        try
        {
            template.send("atest", "allhello",true,4,10000);
        }
        catch (JMSException e)
        {
            e.printStackTrace();
        }
        finally
        {
            template.stop();
        }
1.2.6   从队列atest中同步接收消息

JMSTemplate template = (JMSTemplate)BaseSPIManager.getBeanObject("test.jmstemplate");
        try
        {
            Message msg = template.receive("atest");
            System.out.println("testReceiveMessage:"+ msg);
        }
        catch (JMSException e)
        {
            e.printStackTrace();
        }
        finally
        {
            template.stop();
        }

 
1.2.7   从队列atest中异步接收消息
利用test.jms.receive.template模板从队列atest中异步接收消息。
JMSReceiveTemplate template = (JMSReceiveTemplate)BaseSPIManager.getBeanObject("test.jms.receive.template");
        try
        {
            template.setMessageListener("atest",new MessageListener() {
                public void onMessage(Message arg0)
                {
                    System.out.println("msg comming:"+arg0);
                }              
            });
        }
        catch (Exception e)
        {
            template.stop();
        }
        finally
        {
        }

 
1.2.8   向主题getsubtest发送消息

JMSTemplate template = (JMSTemplate)BaseSPIManager.getBeanObject("test.jmstemplate");
        try
        {
            template.send("topic://getsubtest", "getsubtest");
        }
        catch (JMSException e)
        {
            e.printStackTrace();
        }
        finally
        {
            template.stop();
        }

 
1.2.9   从主题订阅消息

JMSReceiveTemplate template = (JMSReceiveTemplate)BaseSPIManager.getBeanObject("test.topic.receive.jmstemplate");
        try
        {
            template.getTopicSubscriber("getsubtest", "subscribename").setMessageListener(new MessageListener() {
                public void onMessage(Message arg0)
                {
                    System.out.println("topic msg comming:"+arg0);
                }              
            });
        }
        catch (Exception e)
        {
            template.stop();
        }
        finally
        {
        }

 
1.2.10 从主题退订消息

JMSReceiveTemplate template = (JMSReceiveTemplate)BaseSPIManager.getBeanObject("test.topic.receive.jmstemplate");
            try
            {
                template.unsubscribe("subscribename");
            }
            catch (Exception e)
            {
                template.stop();
            }
            finally
            {
            }

注意事项:使用主题发布和订阅消息时,不要使用连接池连接工厂。

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
5月前
|
Java 前端开发 Apache
Apache Wicket与Spring MVC等Java Web框架大PK,究竟谁才是你的最佳拍档?点击揭秘!
【8月更文挑战第31天】在Java Web开发领域,众多框架各具特色。Apache Wicket以组件化开发和易用性脱颖而出,提高了代码的可维护性和可读性。相比之下,Spring MVC拥有强大的生态系统,但学习曲线较陡;JSF与Java EE紧密集成,但在性能和灵活性上略逊一筹;Struts2虽成熟,但在RESTful API支持上不足。选择框架时还需考虑社区支持和文档完善程度。希望本文能帮助开发者找到最适合自己的框架。
60 0
|
7月前
|
消息中间件 Java Spring
Spring Boot与JMS消息中间件的集成
Spring Boot与JMS消息中间件的集成
|
消息中间件 缓存 安全
SpringBoot与JMS集成(中间件为ActiveMQ)
Apache ActiveMQ是最受欢迎和强有力的开源消息和集成模式服务器,支持许多跨语言客户端和协议,便利使用企业集成模式还有许多先进的特性。
|
消息中间件 搜索推荐 Java
消息中间件JMS介绍、入门demo与spring整合
消息中间件JMS介绍、入门demo与spring整合
419 14
消息中间件JMS介绍、入门demo与spring整合
|
消息中间件 Java 测试技术
Spring整合JMS(消息中间件)实例
本篇文章主要描述了如何配置Spring-JMS,至于为何这样配置及Spring-JMS相关介绍,请阅读这篇文章:Spring整合JMS(消息中间件)。我们这里的消息broker用的是ActiveMQ。 一、相关配置 本篇主要讲解如何在Spring中配置JMS,关于Spring本身的配置本文就不多做介绍了。 1.1 配置maven依赖 在使用Spring-JMS之前,先
2034 10
|
消息中间件 Java API
Spring整合JMS(消息中间件)
本篇主要介绍了异步消息机制及Spring对JMS封装,本篇文章讲解较为详细,如果想直接看如何配置,可以参考: Spring整合JMS(消息中间件)实例,但还是建议大家先看完本篇文章。 一、消息异步处理 类似于RMI、Hessian、Burlap等远程方法调用,它们都是同步的,所谓同步调用就是客户端必须等待操作完成,如果远程服务没有返回任何响应,客户端会一直等待直到服务完成
1608 7
|
Web App开发 Apache
MyFaces Core v2.0.7/2.1.1 发布,JSF框架
MyFaces是 JSF (JavaServerFaces) Web框架 (JSR 127)的一个实现。JavaServer(tm) Faces Web框架是一个新的实现MVC模式的规范。 这两个版本优化了 UIComponent EventListenerWrapper ,然后就是修复了一些bug。
766 0