必威体育Betway必威体育官网
当前位置:首页 > IT技术

MDB的简单替代实现

时间:2019-08-03 07:10:00来源:IT技术作者:seo实验室小编阅读:83次「手机版」
 

.mdb

目前的项目要求尽量不要使用EJB来完成本来只有EJB才能实现的功能,比如声明式的事务管理。在做到异步处理某个业务的时候,发现Spring并没有提供MDB的替代实现,看来只能自己实现了。

 

由于这个相对比较简单,现在把相关的代码整理在这里:

 

1.        首先在Spring配置文件中定义ConnectionFactory和一个Destination

 

   <bean id=”connectionFactory” class=”org.springframework.jndi.JndiObjectFactoryBean”>
    <property name=”jndiName”><value>ConnectionFactory</value></property>
</bean>
<bean id=”queue” class=”org.springframework.jndi.JndiObjectFactoryBean”>
    <property name=”jndiName”><value>queue/MyQueue</value></property>
</bean>

 

2.        Send message

 

我们可以使用Spring提供的JmsTemplate来实现消息发送的功能:

 

JmsTemplate template = new JmsTemplate( connectionFactory );
        template.send( destination, new MessageCreator()
        {
            public Message createMessage( session session ) throws JMSException
            {
                return session.createTextMessage( message );
            }
        } );

 

其中的connectionFactorydestionation分别引用Spring中定义好的Bean

 

3.        Message consumer

 

我们用一个简单的类来替代MDB。为了实现这个功能,我们需要考虑下面几个问题:

 

·         他需要实现MessageListener接口;

·         他需要监听一个Destination

·         系统启动的时候能够发布这个类

 

我们可以用下面的方法解决这些问题:

 

首先定义这个类:

 

public class MessageConsumerImpl implements MessageListener
{
       public void init()
       {
       }
       public void onMessage( Message message )
       {
                 //process the message.
       }
}

 

然后在Spring配置文件中定义这个Bean的时候,定义其init-method属性,如下:

 

<bean id="messageConsumer" class="com.company.MyMessageConsumer" init-method="init">
       <property name="connectionFactory"><ref local="connectionFactory"/></property>
       <property name="destination"><ref local="queue"/></property>
</bean>

 

init方法中将该类和一个具体的Destination绑定,如下:

 

public void init() {      
       connection = (QueueConnection) connectionFactory.createConnection();
       Session session = connection.createSession( false,
                    Session.AUTO_ACKNOWLEDGE );
       MessageConsumer consumer = session.createConsumer( destination );
       consumer.setMessageListener( this );
       connection.start();
}

 

其中MessageCosumerjavax.jms包中的一个类。代码中仅用了一个Queue来作P2P的消息发送情况,Pub-Sub的消息没有测试。

相关阅读

java解析MDB文件的方法,已经写成公用方法

近期,有人和我说某些企业的数据是存储在Access库中,该文件以点mdb(.mdb)结尾,新人也许不知道Access。它是微软的办公软件存储形式,与o

mdb是什么文件?

mdb是什么文件?mdb文件怎么打开呢?相必还有很多朋友对于mdb是什么格式的文件还不太清楚,下文小编就教大家mdb文件的打开方法,有需要

mdb是什么文件 用什么软件怎么打开

mdb文件是什么文件,肯定有不少网友还没通过mdb格式文件,那么mdb是什么文件,怎么打开它呢?小编教大家如何打开mdb格式文件吧。具体内容

分享到:

栏目导航

推荐阅读

热门阅读