【问题标题】:Queue creation in Spring EnvironmentSpring环境中的队列创建
【发布时间】:2014-05-12 11:25:16
【问题描述】:

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

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

请帮帮我,我被卡住了。

谢谢。

【问题讨论】:

    标签: spring jboss jms spring-jms


    【解决方案1】:

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

    Spring 使用 DestinationResolver 做到这一点。由于您已将 Spring 配置为连接到您的 JMS 代理,因此您必须在某处进行 JNDI 配置(通过使用 jndi.properties 或其他形式)。如果还没有的话,你可以很容易地用它创建一个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 条目。检查您在 JBoss 中使用的 JNDI 名称,以便从基于 Spring 的代码中查找它。

    【讨论】:

      【解决方案2】:

      当您使用一些 JEE 容器时,如果您依赖它的选项会更好:JDBC、JMS 等。在您的情况下,您应该使用 JBOSS 配置配置 QueueConnectionFactory

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

      这里是一些如何配置 Spring 以在 Annotation 配置的情况下处理 JNDI 的答案:Spring @Resource Handling

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-04
        • 2013-06-13
        • 1970-01-01
        • 2017-04-08
        • 2017-07-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多