java - Spring 集成 - 更少的样板?

标签 java xml spring spring-integration

我已经开始使用Spring-integration来监听JMS队列,它的工作令人满意,但是我对设置一个JMS队列所需的xml配置量有一些问题。听众。其中大部分都是样板文件,更改的实际上只是 jms 实例和要监听的队列的名称,以及接收消息时要调用的类和方法。这是一个例子:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:int="http://www.springframework.org/schema/integration"
       xmlns:jms="http://www.springframework.org/schema/integration/jms"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                           http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd
                           http://www.springframework.org/schema/integration/jms http://www.springframework.org/schema/integration/jms/spring-integration-jms.xsd">
  <bean id="jms.queue.myQueue" class="org.apache.activemq.command.ActiveMQQueue">
    <constructor-arg value="${myApplication.jms.queue.myQueue}" />
  </bean>
  <bean id="jms.container.myJMSListender"
        class="org.springframework.jms.listener.DefaultMessageListenerContainer"
        destroy-method="destroy">
    <property name="connectionFactory"
              ref="jmsConnectionFactory" /> <!-- Defined elsewhere -->
    <property name="destination"
              ref="jms.queue.myQueue" />
    <property name="sessionTransacted"
              value="true" />
  </bean>

  <int:publish-subscribe-channel id="channel.myQueue" />

  <jms:message-driven-channel-adapter id="channelAdapter.myQueue"
                                      container="jms.container.myQueue"
                                      channel="channel.myQueue"
                                      acknowledge="transacted"/>

  <int:service-activator id="serviceActivator.myQueue"
                         input-channel="channgel.myQueue"
                         ref="myQueueJMSListener"
                         method="handleMessage" />
</beans>

正如您所看到的,许多配置相当简单,并且有相当多的 JMS 监听器,这无论是读还是写都变得乏味。

是否有一种方法可以使用 Spring 集成来配置监听队列,从而需要更少的样板文件?我已经考虑过创建自己的 XML 标签,但我有点希望有一个更简单的解决方案。

最佳答案

如果您需要配置未在命名空间上公开的属性,则仅需要外部容器。

<jms:message-driven-channel-adapter id="channelAdapter.myQueue"
                                  destination="jms.queue.myQueue"
                                  connection-factory="jmsConnectionFactory"
                                  channel="channel.myQueue"
                                  acknowledge="transacted"/>

关于java - Spring 集成 - 更少的样板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30932637/

相关文章:

javascript - jQuery HTMLCollection,标签剥离

java - 无法使用 XSD 架构验证 XML

java - junit.framework.ComparisonFailure : table count expected [1] but was [95]

spring - 将 ResponseEntity<T> 和 @RestController 用于 Spring RESTful 应用程序时

java - 我可以在 JPA 中创建此查询而不使用 native 查询吗?

java - 为什么 .NET 是框架而 Java 是语言

java - 为java的try with resources语句管理的资源声明自变量

php - 解析器错误 : Start tag expected, '<' 未找到

Spring Data MongoDB 与 Java 8 LocalDate MappingException

java - Java Collection.frequency 的 C++ 等价物?