Spring环境中的队列创建

时间:2014-05-12 11:25:16

标签: spring jboss jms spring-jms

我是Spring Jms的新手,我研究了如何使用spring和jboss来创建队列并使用它们。我想知道在使用JndiObjectFactoryBean spring配置配置时如何创建队列。

我们是否需要编写一些用于创建队列的xml配置?我已经看到了在文件中编写队列配置并放置在jboss的deploy文件夹中的各种示例。所以在使用Spring时我们是否需要编写这些配置?

请帮助我,我被困住了。

谢谢。

2 个答案:

答案 0 :(得分:1)

当您使用通过JNDI访问的JMS代理时,您只需要确保Spring能够将表示javax.jms.Destination的String解析为实际的目标。

Spring使用DestinationResolver做到了这一点。由于您已将Spring配置为连接到JMS代理,因此必须在某处(通过使用jndi.properties或其他形式)进行JNDI配置。如果情况并非如此,您可以轻松地创建JndiTemplate

一旦你有了这个,你需要定义一个bean,如下所示,假设JndiTemplate bean可用,名称为jndiTemplate

@Bean
public JndiDestinationResolver destinationResolver() {
   JndiDestinationResolver destinationResolver = new JndiDestinationResolver();
   destinationResolver.setJndiTemplate(jndiTemplate());
   return destinationResolver;
}

<bean id="destinationResolver"
      class="org.springframework.jms.support.destination.JndiDestinationResolver">
    <property name="jndiTemplate" ref="jndiTemplate"/>
</bean>

然后,您需要配置此destinationResolver而不是默认值。您可以在JmsTemplate和消息侦听器容器上执行此操作(检查destinationResolverdestination-resolver属性)。

您的队列或主题的名称是jndi条目。 Chekc您在JBoss中使用的JNDI名称,用于从基于Spring的代码中查找它。

答案 1 :(得分:0)

当你使用某个JEE容器时,如果你依赖它的选项会更好:JDBC,JMS等。在你的情况下,你应该使用JBOSS配置配置QueueConnectionFactory。 / p>

从Spring应用程序中,您只需要从JNDI获取对这些对象的引用。对于@Resource或任何@Configuration服务,似乎@Component似乎已足够。

以下是一些答案如何配置Spring以便在注释配置的情况下处理JNDI:Spring @Resource Handling