Spring环境中的队列创建

Spring环境中的队列创建,spring,jboss,jms,spring-jms,Spring,Jboss,Jms,Spring Jms,我是SpringJMS新手,我研究了如何使用Spring和jboss创建队列并使用它们。我想知道当使用JndiObjectFactoryBean spring配置进行配置时,队列是如何创建的 我们需要编写一些xml配置来创建队列吗?我已经看到了在文件中编写队列配置并将其放置在jboss的deploy文件夹中的各种示例。因此,在使用Spring时,我们需要编写这些配置吗 请帮帮我,我卡住了 谢谢。当您使用一些JEE容器时,如果您依赖它的选项:JDBC、JMS等,那么它会更好。在您的情况下,您应该使

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

我们需要编写一些xml配置来创建队列吗?我已经看到了在文件中编写队列配置并将其放置在jboss的deploy文件夹中的各种示例。因此,在使用Spring时,我们需要编写这些配置吗

请帮帮我,我卡住了


谢谢。

当您使用一些JEE容器时,如果您依赖它的选项:JDBC、JMS等,那么它会更好。在您的情况下,您应该使用JBOSS配置来配置
队列
连接工厂

从Spring应用程序中,您只需要从JNDI获取对这些对象的引用。似乎对于
@配置
或任何
@组件
服务来说,资源应该足够了


下面是一些关于如何配置Spring以在注释配置的情况下处理JNDI的答案:

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

Spring使用
DestinationResolver
实现这一点。因为您已经将Spring配置为连接到JMS代理,所以您必须在某处具有JNDI配置(通过使用
JNDI.properties
或其他形式)。如果不是这样的话,您可以使用它轻松创建
jndemplate

一旦有了它,您需要如下定义bean,假设
jndemplate
bean的名称为
jndemplate

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


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

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

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