设计java类以通过spring将消息发送到队列

时间:2015-03-26 06:11:20

标签: spring spring-jms tibco

我是Spring jms世界的新手,在此之前我已经使用了没有spring的核心java程序我们手动创建了连接工厂但是现在我正在学习spring jms,现在我已经配置了xml但是plesae建议我如何设计相应的java类,通过它我可以将文本消息发送到队列

    <bean id="tibcoEMSJndiTemplate" class="org.springframework.jndi.JndiTemplate">
        <property name="environment">
            <props>
                <prop key="java.naming.factory.initial">com.tibco.tibjms.naming.TibjmsInitialContextFactory</prop>
                <prop key="java.naming.provider.url">tcp://abcnet:707</prop>
                <prop key="java.naming.security.principal">abc</prop>
                <prop key="java.naming.security.credentials">abc</prop>
            </props>
        </property>
    </bean>


    <bean id="tibcoEMSConnFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiTemplate">
            <ref bean="tibcoEMSJndiTemplate" />
        </property>
        <property name="jndiName">
            <value>GenericConnectionFactory</value>
        </property>
    </bean>


 <bean id="tibcosendJMSTemplate" class="org.springframework.jms.core.JmsTemplate">
        <property name="connectionFactory">
            <ref local="tibcoEMSConnFactory" />
        </property>
        <property name="defaultDestinationName">
            <value>test.data</value>
        </property>         
        <property name="pubSubDomain">
            <value>false</value> 
        </property>
        <property name ="receiveTimeout">
            <value>120000</value>
        </property> 
    </bean> 
人们建议我已经设计了下面的java类,但我的问题是应该有另一个类由main methid组成并且加载我的xml,我设计了下面的java类但是我知道它不正确如果你不介意请你说明如何设计java类,以便我可以掌握以及我的上面的xml注入依赖关系。

import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Queue;
import javax.jms.Session;

import org.springframework.jms.core.MessageCreator;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jndi.JndiTemplate;




public class JmsQueueSender {

    private JmsTemplate jmsTemplate;
    private Queue queue;

    public void setConnectionFactory(ConnectionFactory cf) {
        this.jmsTemplate = new JmsTemplate(cf);
    }

    public void setQueue(Queue queue) {
        this.queue = queue;
    }

    public void simpleSend() {
        this.jmsTemplate.send(this.queue, new MessageCreator() {
            public Message createMessage(Session session) throws JMSException {
                return session.createTextMessage("hello queue world");
            }
        });
    }
}

1 个答案:

答案 0 :(得分:1)

阅读the documentation

JmsTemplate最简单的用法是......

tibcoJmsTemplate.convertAndSend("foo");

...会将foo转换为TextMessage并将其发送到您的默认目标(test.data)。

如果您需要访问会话,JmsTemplate具有这些高级方法,并提供更多高级功能,或者在转换后对邮件进行后处理。